New submission from Safihre <safi...@sabnzbd.org>:
It consistently fails on the first directory in a long-path UNC notation server-folder. >>> os.makedirs(r"\\?\UNC\DiskStation\already_exists", exist_ok=True) Traceback (most recent call last): File "<input>", line 1, in <module> File "C:\Users\safihre\AppData\Local\Programs\Python\Python38\lib\os.py", line 213, in makedirs makedirs(head, exist_ok=exist_ok) File "C:\Users\safihre\AppData\Local\Programs\Python\Python38\lib\os.py", line 213, in makedirs makedirs(head, exist_ok=exist_ok) File "C:\Users\safihre\AppData\Local\Programs\Python\Python38\lib\os.py", line 223, in makedirs mkdir(name, mode) OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect: '\\\\?\\UNC\\' >>> os.makedirs(r"\\?\UNC\DiskStation\already_exists") Traceback (most recent call last): File "<input>", line 1, in <module> File "C:\Users\safihre\AppData\Local\Programs\Python\Python38\lib\os.py", line 213, in makedirs makedirs(head, exist_ok=exist_ok) File "C:\Users\safihre\AppData\Local\Programs\Python\Python38\lib\os.py", line 213, in makedirs makedirs(head, exist_ok=exist_ok) File "C:\Users\safihre\AppData\Local\Programs\Python\Python38\lib\os.py", line 223, in makedirs mkdir(name, mode) OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect: '\\\\?\\UNC\\' The second level directory is working correctly as expected: >>> os.makedirs(r"\\?\UNC\DiskStation\already_exists\new") >>> os.makedirs(r"\\?\UNC\DiskStation\already_exists\new") Traceback (most recent call last): File "<input>", line 1, in <module> File "C:\Users\safihre\AppData\Local\Programs\Python\Python38\lib\os.py", line 223, in makedirs mkdir(name, mode) FileExistsError: [WinError 183] Cannot create a file when that file already exists: '\\\\?\\UNC\\DiskStation\\test_get2\\test2' Inspecting the code, I think the problem is in the os.path.exists function that is called from within os.makedirs, the line in os.makedirs says: if head and tail and not path.exists(head): But: >>> head, tail = path.split(r"\\?\UNC\DiskStation\already_exists") ('\\\\?\\UNC\\DiskStation', 'already_exists') >>> os.path.exists(r'\\?\UNC\DiskStation') False >>> os.path.exists(r'\\DiskStation') False So it wrongly goes ahead and tries to create \\?\UNC\DiskStation ---------- components: Windows messages: 376312 nosy: Safihre, paul.moore, steve.dower, tim.golden, zach.ware priority: normal severity: normal status: open title: os.makedirs fails long-path UNC-paths if it is the first sub-folder versions: Python 3.8 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue41705> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com