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

我使用python os.walk()获取文件和目录在一些目录中,但有文件称太长(> 300),os.walk()没有返回,使用onerror我得到'[错误234]更多数据可用“。 我试图使用yield,但也得不到任何东西,并显示“Traceback:StopIteration”。

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

我无法为这些目录做任何事情,比如重命名或移动长名称的文件。 请帮我解决问题!

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

在Windows中,文件名(包括路径)不能超过255个字符,所以你看到的错误来自Windows而不是Python–因为你设法创建了这么大的文件名,但是现在你不能读取它们。 看到这个职位了解更多详情。