当存在长文件名时,Python 的 os.walk() 在 Windows 中失败

use*_*309 4 python windows filenames file os.walk

我使用 python os.walk() 获取某些目录中的文件和目录,但有些文件的名称太长(>300),os.walk() 什么也不返回,使用 onerror 我得到 '[Error 234] More数据可用”。我尝试使用yield,但也没有得到任何结果并显示“Traceback:StopIteration”。

操作系统是windows,代码简单。我已经用目录进行了测试,如果存在长名称文件,则会出现问题,而如果用短名称重命名长名称文件,代码可以获得正确的结果。

我无法对这些目录执行任何操作,例如重命名或移动长名称文件。请帮我解决问题!

def t(a):
  for root,dirs,files in os.walk(a): 
    print root,dirs,files
t('c:/test/1') 
Run Code Online (Sandbox Code Playgroud)

Ósc*_*pez 5

在 Windows 中,文件名(包括路径)不能大于 255 个字符,因此您看到的错误来自 Windows,而不是来自 Python - 因为不知何故您设法创建了这么大的文件名,但现在您无法读取它们。请参阅这篇文章了解更多详细信息。