Чтение файла со странным путем Windows, используя Python - PullRequest
0 голосов
/ 25 апреля 2018

с питоном 3

У меня есть внешний диск с резервной копией Dropbox. Я копировал файлы с этого диска в другое место, используя python, используя os.walk и перебирая файлы. os.walk создаст правильную папку и имя файла.

т.е. W:\Z Drive Backup 4-14-18\Dropbox\Autodesk 2018 Win\file.xyz

Однако при использовании open или os.stat это дает мне FileNotFoundError.

FileNotFoundError: [WinError 3] The system cannot find the path specified: 'W:/Z Drive Backup 4-14-18/Dropbox/Autodesk 2018 Win

При открытии свойств файла отображается местоположение с \\?\ перед ним. Смотри фото. Если я добавлю это к пути к файлу, я получу ту же ошибку.

Я натолкнулся на множество папок и файлов, когда делал это, у которых в пути были фанки Unicode или другие символы. Я смог идентифицировать их и заменить плохого персонажа на str.replace для большинства из них. Я думаю, что эта проблема с \\?\ заранее относится к тому же типу проблемы, однако он даже не видит файл в python для меня, чтобы переименовать его.

Есть идеи как исправить путь к файлу?

Если я переименую файл на этом диске, это не решит проблему. Если я скопирую файл в другое место, то это нормально. Но есть проблема при копировании назад. Есть много файлов, поэтому я не хочу делать это вручную.

enter image description here

1 Ответ

0 голосов
/ 15 мая 2018

Начиная с Windows 10, версия 1607, ограничения MAX_PATH были удалены из общих функций файлов и каталогов Win32. Тем не менее, вы должны подписаться на новое поведение

Чтобы подписаться, отредактируйте раздел реестра. HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ FileSystem @ LongPathsEnabled to 1

Ссылка: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396 https://bugs.python.org/issue27731

...