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

问题描述 投票:0回答:2

我使用 python os.walk() 获取某些目录中的文件和目录,但是有些文件的名称太长(>300),os.walk() 什么都不返回,使用 onerror 我得到'[错误 234]更多数据可用'。我尝试使用 yield,但也一无所获并显示“Traceback:StopIteration”。

OS是windows,代码简单。我用一个目录测试过,如果有长文件名,就会出现问题,而如果用短文件名重命名长文件名,代码可以得到正确的结果。

我对这些目录无能为力,例如重命名或移动长名称文件。 请帮我解决问题!

def t(a):
  for root,dirs,files in os.walk(a): 
    print root,dirs,files
t('c:/test/1') 
python windows file filenames os.walk
2个回答
5
投票

在 Windows 中,文件名(包括路径)不能超过 255 个字符,所以你看到的错误来自 Windows,而不是 Python - 因为你设法创建了这么大的文件名,但现在你无法读取他们。有关详细信息,请参阅此post


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.