【发布时间】:2018-04-25 05:09:13
【问题描述】:
使用 Python 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中看到文件让我重命名它。
任何想法如何修复文件路径?
如果我重命名该驱动器上的文件,它并不能解决问题。如果我将文件复制到另一个位置,那就没问题了。但是复制回来的时候有问题。有很多文件,所以我不想手动做任何事情。
【问题讨论】:
-
看起来您在某处有多余或缺少的报价...
-
您可能应该从屏幕截图中删除个人信息
-
默认情况下,Windows 路径规范化模拟 MS-DOS 规则,例如将路径限制为
MAX_PATH(260) 个字符;将正斜杠翻译成反斜杠;保留 DOS 设备名称,例如“CON”和“NUL”;并从最终文件名组件中去除尾随空格和点。 “\\?\”路径前缀指示 Windows 绕过此规范化步骤。它只能与 UTF-16 Unicode 的完全限定路径一起使用(Python 3str,但 Python 3.6+ 文件系统函数将 UTF-8 字节路径隐式解码为 UTF-16)并且仅使用反斜杠作为路径分隔符。
标签: python windows filepath filenotfoundexception os.walk