2017-02-22 399 views
2

我有一個奇怪的問題。我既不能重命名特定的文件,也不能刪除它們。我得到FileNotFoundError。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錯誤沒有找到該文件。

我也嘗試追加一個unicode字符串u''+文件名到字符串,因爲它是由用戶建議的。

路徑長度爲< 260,那麼是什麼原因導致了這個問題?

回答

1

這是一個Windows/Python的事情。具有後期的文件名有時會被修剪。

如果這是一次性任務,則可以使用兩個尾隨句點作爲解決方法。

+0

謝謝!確實是導致文件名截取的尾隨時期。 – Ali

-2

這不正是一個答案(我缺乏的代表),但...

兩個想法:

A)是那些文件名應該用句點結束?相反,逃避反斜槓

B),您可以使用正斜槓在這裏(即C:/ .../.../...)