Tim Chase added the comment:

As requested by Ben Finney[1], adding my use-case here.  I'm attempting to make 
a hard-link from "a" to "b", but if "b" exists, os.link() will fail with an 
EEXISTS.  I don't want to do

 os.unlink("b")
 # power-outage here means "b" is gone
 os.link("a", "b")

I can do something like

  temp_name = tempfile.mktemp(dir=".")
  os.link("a", temp_name)
  try:
    os.rename(temp_name, "b") # docs guarantee this is atomic
  except OSError:
    os.unlink(temp_name)

but mktemp() is marked as deprecated.

I'm okay with the stray temp-file floating around to clean up in the event of 
power-loss after the os.link() but before the os.unlink() call, as is new info, 
not disposing of existing file-names



[1] https://mail.python.org/pipermail/python-list/2017-April/721641.html

----------
nosy: +gumnos

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue26362>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to