On 15Feb2016 12:19, Ben Finney <ben+pyt...@benfinney.id.au> wrote:
Dan Sommers <d...@tombstonezero.net> writes:
On Mon, 15 Feb 2016 11:08:52 +1100, Ben Finney wrote:
> I am unconcerned with whether there is a real filesystem entry of
> that name; the goal entails having no filesystem activity for this.
> I want a valid unique filesystem path, without touching the
> filesystem.
That's an odd use case.
It's very common to want filesystem paths divorced from accessing a
filesystem entry.
For example: test paths in a unit test. Filesystem access is orders of
magnitude slower than accessing fake files in memory only, it is more
complex and prone to irrelevant failures. So in such a test case
filesystem access should be avoided as unnecessary.
But.. then why a filesystem path at all in that case? Why use a filesystem as a
reference at all?
I've been watching this for a few days, and am struggling to understand your
use case.
The only modes I can imagine for such a thing (a generated but unused filename)
are:
checking that the name is syntactly valid, for whatever constrains you may
have (but if you're calling an opaque mktemp-like function, is this feasible
or remediable?)
checking that the name generated does in fact not correspond to an existing
file (which presumes that the target directory has no other users, which also
implies that you don't need mktemp - a simple prefix+unused-ordinal will do)
generating test paths using a real filesystem as a reference but not making a
test file - I'm having trouble imagining how this can be useful
generating test paths without using a real filesystem as a reference, but
then you can't even use mktemp
I think I can contrive your test case scenario using #3:
filepath = mktemp(existing_dir_path)
fp = InMemoryFileLikeClassWithBogusName(filepath)
do I/O on fp ...
but I don't see how it is useful to have a notion of a filepath at all in this
case, and therefore I don't see why you would want a mktemp-like function
available. Can you elaborate with a concrete example and its purpose which
would work with a mktemp-ish official function?
You say:
One valid filesystem path each time it's accessed. That is, behaviour
equivalent to ‘tempfile.mktemp’.
My question is because the standard library clearly has this useful
functionality implemented, but simultaneously warns strongly against its
use.
I'm looking for how to get at that functionality in a non-deprecated
way, without re-implementing it myself.
I think "the standard library clearly has this useful functionality
implemented, but simultaneously warns strongly against its use" pretty much
precludes this.
I think you probably need to reimplement. However if your intent is never to
use the path you can use something very simple (my personal habit is
prefix+ordinal where that doesn't already exist - keep the last ordinal to
arrange a distinct name next time).
Cheers,
Cameron Simpson <c...@zip.com.au>
--
https://mail.python.org/mailman/listinfo/python-list