Python FileNotFoundError 如何处理长文件名
Python FileNotFoundError how to handle long filenames
我有一个奇怪的问题。我既不能重命名特定文件,也不能删除它们。我收到 FileNotFoundError。
之前有人问过类似的问题。这个问题的解决方案是使用完整路径而不仅仅是文件名。
我的脚本在仅使用文件名之前工作正常,但使用不同的文件时出现此错误,即使使用完整路径也是如此。
似乎是文件名导致了错误,但我无法解决。
import os
cwd = os.getcwd()
file = "003de5664668f009cbaa7944fe188ee1_recursion1.c_2016-04-21-21-06-11_9bacb48fecd32b8cb99238721e7e27a3."
change = "student_1_recursion1.c_2016-04-21-21-06-11_9bacb48fecd32b8cb99238721e7e27a3."
oldname = os.path.join(cwd,file)
newname = os.path.join(cwd,change)
print(file in os.listdir())
print(os.path.isfile(file))
os.rename(oldname, newname)
我得到以下输出:
True
False
Traceback (most recent call last):
File "C:\Users\X\Desktop\code\sub\test.py", line 13, in <module>
os.rename(oldname, newname)
FileNotFoundError: [WinError 2] Das System kann die angegebene Datei nicht finden: 'C:\Users\X\Desktop\code\sub\003de5664668f009cbaa7944fe188ee1_recursion1.c_2016-04-21-21-06-11_9bacb48fecd32b8cb99238721e7e27a3.' -> 'C:\Users\X\Desktop\code\sub\student_1_recursion1.c_2016-04-21-21-06-11_9bacb48fecd32b8cb99238721e7e27a3.'
[Finished in 0.4s with exit code 1]
如果我在文件夹中使用 windows 搜索,这个文件是存在的。
如果我尝试使用完整路径,我还会收到 windows 找不到文件的错误。
我也试过将 unicode 字符串 u''+filename 添加到字符串中,因为这是用户建议的。
路径长度 < 260,请问是什么原因造成的?
这不完全是一个答案(我没有那个代表)但是...
两个想法:
A) 这些文件名应该以句点结尾吗?
B) 您可以在此处使用正斜杠而不是转义反斜杠(即 C:/.../.../...)
这是 windows/Python 的事情。带有尾随句点的文件名有时会被修剪。
如果这是一次性任务,您可以使用两个尾随句点作为解决方法。
我有一个奇怪的问题。我既不能重命名特定文件,也不能删除它们。我收到 FileNotFoundError。
之前有人问过类似的问题。这个问题的解决方案是使用完整路径而不仅仅是文件名。
我的脚本在仅使用文件名之前工作正常,但使用不同的文件时出现此错误,即使使用完整路径也是如此。
似乎是文件名导致了错误,但我无法解决。
import os
cwd = os.getcwd()
file = "003de5664668f009cbaa7944fe188ee1_recursion1.c_2016-04-21-21-06-11_9bacb48fecd32b8cb99238721e7e27a3."
change = "student_1_recursion1.c_2016-04-21-21-06-11_9bacb48fecd32b8cb99238721e7e27a3."
oldname = os.path.join(cwd,file)
newname = os.path.join(cwd,change)
print(file in os.listdir())
print(os.path.isfile(file))
os.rename(oldname, newname)
我得到以下输出:
True
False
Traceback (most recent call last):
File "C:\Users\X\Desktop\code\sub\test.py", line 13, in <module>
os.rename(oldname, newname)
FileNotFoundError: [WinError 2] Das System kann die angegebene Datei nicht finden: 'C:\Users\X\Desktop\code\sub\003de5664668f009cbaa7944fe188ee1_recursion1.c_2016-04-21-21-06-11_9bacb48fecd32b8cb99238721e7e27a3.' -> 'C:\Users\X\Desktop\code\sub\student_1_recursion1.c_2016-04-21-21-06-11_9bacb48fecd32b8cb99238721e7e27a3.'
[Finished in 0.4s with exit code 1]
如果我在文件夹中使用 windows 搜索,这个文件是存在的。 如果我尝试使用完整路径,我还会收到 windows 找不到文件的错误。
我也试过将 unicode 字符串 u''+filename 添加到字符串中,因为这是用户建议的。
路径长度 < 260,请问是什么原因造成的?
这不完全是一个答案(我没有那个代表)但是...
两个想法:
A) 这些文件名应该以句点结尾吗?
B) 您可以在此处使用正斜杠而不是转义反斜杠(即 C:/.../.../...)
这是 windows/Python 的事情。带有尾随句点的文件名有时会被修剪。
如果这是一次性任务,您可以使用两个尾随句点作为解决方法。