Emily Morehouse <emilyemoreho...@gmail.com> added the comment:

This is an interesting behavior to note. I think the current behavior makes the 
most sense, as it corresponds to the OS-level errors that you get from running 
the same operations.

Interestingly, at least on Unix-based file systems, we get different error 
messages but the same behavior when using "" vs "." as our target:

[linux]$ mkdir ""
mkdir: cannot create directory ‘’: No such file or directory
[linux]$ mkdir .
mkdir: cannot create directory ‘.’: File exists

[mac]$ mkdir ""
mkdir: .: No such file or directory
[mac]$ mkdir .
mkdir: .: File exists

Both os.mkdir and os.makedirs follow (only os.mkdir is included as the 
traceback is cleaner, but they raise the same errors):
>>> os.mkdir("")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: ''
>>> os.mkdir(".")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
FileExistsError: [Errno 17] File exists: '.'


Since on an OS level the only time "File exists" is returned is when using "." 
and not "", os.makedirs with exists_ok=True also follows:

>>> os.makedirs("", exist_ok=True)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File 
"/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/os.py",
 line 220, in makedirs
    mkdir(name, mode)
FileNotFoundError: [Errno 2] No such file or directory: ''
>>> os.makedirs(".", exist_ok=True)
>>>

Basically, the FileExistsError gets silenced, but FileNotFoundError is left 
alone. I can see how the differences are nuanced and not obvious though.


Unless you think there is a succinct and worthwhile way of adding this to the 
documentation, I think this issue can be closed.

----------
nosy: +emilyemorehouse

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

Reply via email to