2016-12-05 45 views
1

我在網7檔目錄是這樣的:掃描目錄和重命名文件在Python

enter image description here

我想通過我的文件夾中的所有文件進行掃描和重命名某些文件。

我已經

import os 

path = '/Users/username/Desktop/web' 
for filename in os.listdir(path): 
    if filename.startswith("test"): 
     print 'found' 
     os.rename(filename, filename.replace("test_", " ")) 
    else: 
     continue 

後運行它,

蟒蛇scan_dir.py

我對我做錯了什麼了

found 
Traceback (most recent call last): 
    File "scan_dir.py", line 9, in <module> 
    os.rename(filename, filename.replace("test_", " ")) 
OSError: [Errno 2] No such file or directory 

任何提示?

+0

是否有任何理由在Python中而不是像Rename Master這樣的現有工具做這件事? – TigerhawkT3

+0

另請注意,您的新文件名將以空格開頭。 – TigerhawkT3

+0

另外,基本的谷歌搜索「python os.rename沒有這樣的文件或目錄」(其中大部分是通過谷歌建議自動完成的)產生了包括鏈接副本在內的若干有用結果。請在發佈新問題之前做幾秒的研究。 – TigerhawkT3

回答

2

當你rename你應該使用完整的路徑:

import os 

path = '/Users/name/Desktop/web' 
for filename in os.listdir(path): 
    if filename.startswith("test"): 
     print 'found' 
     os.rename(os.path.join(path, filename), os.path.join(path, filename.replace("test_", " "))) 
    else: 
     continue 

在你當前的代碼你用什麼嘗試重命名當前目錄中的文件test_3.jpg(從你的例子),這可能不要不存在。

順便說一下,我會concode使用glob function來代替。

+1

任何理由去使用字符串格式而不是'os.path.join'? – TigerhawkT3

+0

沒有具體原因。在這個特定的情況下,我不認爲'os.path.join'是必需的,但是可以同時使用。 – Dekel

+0

更改爲'os.path.join' :) – Dekel