我正试图浏览一个目录。代码如下:
file_list = []
os.chdir(self.config.Root_Directory_Path())
for root, dirs, files in os.walk("."):
file_list.extend( join(root,f) for f in files )
file_sorted = sorted(file_list)
f = open(self.config.Client_Local_Status(),'wb')
for file in file_sorted:
print(file + "|" + str(os.path.getmtime(file)) + "\n")
f.close()
首先,我遍历树,然后排序,然后打印。但是我在遍历时得到了下面的错误。我很确定这个文件存在,但不能找出错误的原因。请帮我找出错误的原因,然后加以修正。在
下面是输出。在
输出:
^{pr2}$在成功打印大量文件名后,某个特定文件的代码失败,如下所示:
错误:
Traceback (most recent call last):
File "C:\SyncClientRK\SyncClientRK.py", line 183, in <module>
SyncClientRK()
File "C:\SyncClientRK\SyncClientRK.py", line 17, in __init__
self.getStatus()
File "C:\SyncClientRK\SyncClientRK.py", line 38, in getStatus
self.generateLocalStatus()
File "C:\SyncClientRK\SyncClientRK.py", line 53, in generateLocalStatus
print(file + "|" + str(os.path.getmtime(file)) + "\n")
File "C:\Python33\lib\genericpath.py", line 54, in getmtime
return os.stat(filename).st_mtime
FileNotFoundError: [WinError 3] The system cannot find the path specified: '.\\Drivers\\Intel Drivers\\Applications\\Software\\Applications\\Wave_Embassy_Trust_Suite\\EMBASSY Security Center\\program files\\Wave Systems Corp\\EMBASSY Security Center\\plugins\\cpm.scp\\webinterface\\zh-CHS\\AccessingToolkit.htm'
请注意,文件是在循环中获取并打印的,但是os.path.getmtime操作系统抛出一个找不到的错误。不知道为什么以及如何解决这个问题。在
这是一个220个字符长的文件名,从本地目录开始。假设本地目录的路径长度超过40个字符,那么您就达到了一个旧的Windows限制,即路径长度超过260个字符。在
不是所有在Windows中处理文件的方法都有这个限制,但这可能就是这里的问题所在。如果您的列表中有文件名更长,那么这显然不是问题所在,但这是我首先要研究的。在
另请参见:http://msdn.microsoft.com/en-us/library/aa365247%28v=vs.85%29.aspx#maxpath
文件名中可能有奇怪的字符?显然,
os.walk
返回了您以后无法访问的内容;这不应该发生,但确实发生了。必须是一些奇怪的东西,可能与Windows文件系统,文件名处理等有关。打印不存在的名称,使用repr(file_name)
,看看是否能在里面找到奇怪的字符。更有可能是其他因素在作祟,但这是目前我最好的猜测。在相关问题 更多 >
编程相关推荐