Python的操作系统walk()在Windows中当文件名长时失败

nwsw7zdq  于 2023-05-01  发布在  Windows
关注(0)|答案(3)|浏览(180)

我用的是Python OS。walk()获取一些目录中的文件和目录,但有些文件的名称太长(〉300),os。walk()不返回任何内容,使用onerror我得到'[错误234]更多数据可用'。我尝试使用yield,但也没有得到任何东西,并显示'Traceback:停止迭代。
操作系统是Windows,代码很简单。我用一个目录进行了测试,如果有长名文件,就会出现问题,而如果用短名重命名长名文件,代码可以得到正确的结果。
我不能对这些目录做任何事情,例如重命名或移动长名称文件。请帮我解决这个问题!

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

57hvy0tb1#

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

zhte4eai

zhte4eai2#

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

lmvvr0a8

lmvvr0a83#

路径的最大长度限制为256。从Windows 10版本1607开始,此限制已被删除,但您必须选择加入此新行为。您可以执行以下操作之一:
1.打开注册表,导航到Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\,并创建一个名为LongPathsEnabled的新项,键入REG_DWORD和值1。2
1.在PowerShell命令New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
在此处阅读有关Windows如何命名文件、路径和命名空间的更多信息。
或者,您可以使用Unix操作系统运行虚拟机。

相关问题