【发布时间】:2012-11-16 23:57:16
【问题描述】:
我在 Windows 上运行我的 python 代码并尝试遍历并将所有文件名及其路径存储在一个文件中。但是 Windows 有 260 个字符的限制。
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_name_sorted = sorted(file_list)
#file_sorted = sorted(file_list, key=getsize)
#time.strftime("%m/%d/%Y %I:%M:%S %p" ,time.localtime(os.path.getmtime(file)))
f = open(self.config.Client_Local_Status(),'wb')
for file_name in file_name_sorted:
if (os.path.exists(file_name)):
#f.write((str(os.path.getmtime(file_name)) + "|" + file_name + "\n").encode('utf-8'))
pass
else:
print(file_name + "|" + str(len(file_name) + len(originalPath)) + "\n")
print(os.path.getmtime(file_name))
#f.write((str(os.path.getmtime(file_name)) + "|" + file_name + "\n").encode('utf-8'))
f.close()
因为错误,os.path.getmtime(file_name) 抛出一个未找到的异常文件。我该如何克服这个问题?我尝试使用 //?/ 字符作为前缀,如
中所建议的那样http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx
但是没有成功使用 //?/ 字符。
我试过用os.path.getmtime("////?//" + file_name) #Threw an error invalid path
请提出修复建议
【问题讨论】:
-
@PedroRomano 没问题。谢谢...期待一些帮助
-
@PedroRomano 近 2 天来,我一直在疯狂寻找解决方案。如果您喜欢这个问题,请对此投赞成票,以便我希望很多人都能看到。谢谢
-
如果您使用正斜杠,请不要像那样将它们加倍。只有反斜杠需要加倍,因为反斜杠是(非原始)字符串的转义字符;斜线是一个完全正常的字符。试试
'//?/'而不是'////?//'看看会发生什么。 -
另外,我认为您只能将 \\?\ 与绝对路径一起使用。从您对 Pedro Romano 的回答的评论来看,您似乎有一条以
./开头的相对路径。尝试用os.path.abspath(file_name)代替file_name。 -
由于我添加了其他 cmets 的答案被删除了,让我在这里重复重要的一点:你不能这样做
r'\\?\\',因为这会导致额外的反斜杠,使路径无效.如果正斜杠不起作用(使用abspath),请尝试\\\\?\` (again withabspath`)。
标签: python python-3.x