2011-09-29 59 views
0

我有一大組帶有.PNG擴展名的圖像(比如image00.PNG)。我想將它轉換成.png(小寫)。我從互聯網上得到了一個腳本,但無法處理。將圖像名稱擴展名從.PNG轉換爲Python中的.png

這裏的腳本:

files = os.listdir(cur_dir) 
for filename in files: 
    file_ext = os.path.splitext(filename)[1] 
    if old_ext == file_ext: 
     newfile = filename.replace(old_ext, new_ext) 
     os.rename(filename, newfile) 

當我嘗試在終端上運行它,我得到的錯誤:

NameError: name 'filename' is not defined 

可能是什麼問題呢?

+0

哪條線扔的錯誤? – Dogbert

+3

問題是,你沒有向我們展示真實的代碼。 –

+3

當你運行你發佈的代碼時,我有一個「old_ext」未定義,這是真的......向我們展示真實的代碼;) –

回答

5

試試這個,它適用於真正的(和PNGX.PNG不能重命名爲pngX.png;)):

import os 

files = os.listdir(".") 
for filename in files: 
    file_wo_ext, file_ext = os.path.splitext(filename) 
    if file_ext == ".PNG": 
     newfile = file_wo_ext + ".png" 
     os.rename(filename, newfile) 
+1

我想最後一行會拋出'WindowsError:',你需要追加父目錄路徑。 –

+2

您還需要在父目錄路徑中添加newfile,否則它將在重命名過程中將文件移動到當前工作目錄。 –

+0

@AamirAdnan:我在當前目錄下測試了PNG文件的腳本,並將所有文件重命名爲錯誤,也許有一種情況我沒有看到。 –

0

如果當前工作目錄不是cur_dir,則失敗。這是因爲os.listdir()只返回文件名列表,沒有路徑。您應該更改爲

os.rename(os.path.join(cur_dir, filename), os.path.join(cur_dir, newfile)) 

+0

OUCH!這可能是一個錯誤,後來肯定會出現(爲什麼我讓它在那裏作爲答案) - 但這不是問題。 – glglgl

0

您應該定義old_ext.PNGnew_ext.png

-1

這是一個Python腳本。執行以下操作,如果你想使用Python

$ python 
> import os 
> old_ext = "PNG" 
> new_ext = "png" 
> files = os.listdir(cur_dir) 
> for filename in files: 
> file_ext = os.path.splitext(filename)[1] 
> if old_ext == file_ext: 
>  newfile = filename.replace(old_ext, new_ext) 
>  os.rename(filename, newfile) 
> 
> 
>exit() 

但這種強硬,可能會無法正常工作。

我做

​​

通過這個here

0

可以這樣來做:

import os 
for filename in os.listdir(cur_dir): 
    file_ext = os.path.splitext(filename)[1] 
    if file_ext == '.PNG': 
     newfile = filename.replace(file_ext, '.png') 
     os.rename(cur_dir+'/'+filename, cur_dir+'/'+newfile)