tempname.mktemp functionality deprecation

Cameron Simpson cs at zip.com.au
Sun Apr 30 18:41:43 EDT 2017


On 30Apr2017 06:52, Tim Chase <python.list at tim.thechases.com> wrote:
>On 2017-04-29 20:51, Devin Jeanpierre wrote:
>> On Sat, Apr 29, 2017 at 11:45 AM, Tim Chase wrote
>> > So which route should I pursue?
>> > - go ahead and use tempfile.mktemp() ignoring the deprecation?

I'd be tempted to. But...

>> > - use a GUID-named temp-file instead for less chance of collision?

You could, but mktemp is supposed to robustly perform that task, versus "very 
very probably".

>> > - I happen to already have a hash of the file contents, so use
>> >   the .hexdigest() string as the temp-file name?

Hashes collide. (Yes, I know that for your purposes we consider that they 
don't; I have a very similar situation of my own). And what if your process is 
running twice, or leaves around a previous temp file by accident (or 
interruption) _or_ the file tree contains filenames named after the hash of 
their content (not actually unheard of)?

>> > - some other solution I've missed?

What about some variation on:

  from tempfile import NamedTemporaryFile
  ...
  with NamedTemporaryFile(dir=your_target_directory) as T:
      use T.name, and do your rename/unlink in here

Cheers,
Cameron Simpson <cs at zip.com.au>


More information about the Python-list mailing list