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

时间:2013-08-02 15:01:06

标签: python windows file filenames os.walk

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

操作系统是Windows,代码很简单。我已经测试了一个目录,如果有长名文件,则会出现问题,而如果用短名称重命名长名文件,代码可以得到正确的结果。

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

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

1 个答案:

答案 0 :(得分:4)

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