我用的是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')
3条答案
按热度按时间57hvy0tb1#
在Windows中,文件名(包括路径)不能超过255个字符,所以你看到的错误来自Windows,而不是Python -因为你设法创建了这么大的文件名,但现在你无法读取它们。请参阅此post了解更多详细信息。
zhte4eai2#
我能想到的唯一解决方法是将文件夹Map到特定目录。这将使路径更短。例如z:\myfile。xlsx而不是c:\a\B\c\d\e\f\g\myfile。公司简介
lmvvr0a83#
路径的最大长度限制为256。从Windows 10版本1607开始,此限制已被删除,但您必须选择加入此新行为。您可以执行以下操作之一:
1.打开注册表,导航到
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\
,并创建一个名为LongPathsEnabled
的新项,键入REG_DWORD和值1。21.在PowerShell命令
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
中在此处阅读有关Windows如何命名文件、路径和命名空间的更多信息。
或者,您可以使用Unix操作系统运行虚拟机。