使用python读取带有奇怪的windows路径的文件

时间:2018-04-25 05:09:13

标签: python windows filepath filenotfoundexception os.walk

使用Python 3

我有一个带Dropbox备份的外置硬盘。我一直在使用python将文件从此驱动器复制到另一个位置,使用os.walk并通过文件进行迭代。 os.walk将生成有效的文件夹和文件名。

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

但是,在使用openos.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 :(得分:0)

从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