2016-09-07 29 views
0

如果我嘗試重命名目錄中的文件,出於某種原因,我得到一個錯誤。 我認爲問題可能是我沒有以適當的格式插入目錄?在Python中重命名文件:沒有這樣的文件或目錄

附加信息: 蟒蛇2 & Linux機器

OSError: [Errno 2] No such file or directory

雖然它打印目錄中的內容就好了。我究竟做錯了什麼?

import os 

for i in os.listdir("/home/fanna/Videos/strange"): 
    #print str(i) 
    os.rename(i, i[:-17]) 
+0

可能重複的[Python:OSError:\ [Errno 2 \]沒有這樣的文件或目錄:''](http://stackoverflow.com/questions/15725273/python-oserror-errno-2-no-such文件或目錄) –

+1

你在正確的目錄?也就是說,你的python工作目錄是/ home/fanna/Videos /奇怪。如果沒有,連接到文件名 –

回答

4

os.rename()正在等待您想要重命名的文件的完整路徑。 os.listdir只返回目錄中的文件名。試試這個

import os 
baseDir = "/home/fanna/Videos/strange/" 
for i in os.listdir(baseDir): 
    os.rename(baseDir + i, baseDir + i[:-17]) 
+0

這解決了我的問題!沒有意識到它不包括路徑! – Fanna1119

+0

很高興解決。我已經編輯了回答,以便更清楚地瞭解os.listdir返回的內容。請記住,您可以接受最適合您的答案,並在左側留下綠色複選標記。 – CDspace

2

假設有一個文件/home/fanna/Videos/strange/name_of_some_video_file.avi,和你從/home/fanna運行的腳本。

iname_of_some_video_file.avi(文件的名稱,不包括它的完整路徑)。所以,當你運行

os.rename(i, i[:-17]) 

你說

os.rename("name_of_some_video_file.avi", "name_of_some_video_file.avi"[:-17]) 

Python有不知道的是,這些文件從/home/fanna/Videos/strange來了。它解決了他們對現在的工作目錄,所以它正在尋找/home/fanna/name_of_some_video_file.avi

相關問題