4

我使用 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') 
4

2 回答 2

4

在 Windows 中,文件名(包括路径)不能超过 255 个字符,因此您看到的错误来自 Windows,而不是 Python - 因为您设法创建了如此大的文件名,但现在您无法读取它们. 有关更多详细信息,请参阅此帖子

于 2013-08-02T15:38:51.700 回答
0

我能想到的唯一解决方法是将文件夹映射到特定目录。这将使路径更短。例如 z:\myfile.xlsx 而不是 c:\a\b\c\d\e\f\g\myfile.xlsx

于 2022-01-27T23:52:19.527 回答