2013-06-29 21 views
2

我正在編寫腳本以將目錄'./itunes和music/F14 /'中的所有.mp3,.m4a和.m4p文件更改爲另一個標題。我能夠獲得文件名,並使用hsaudiotag我可以得到標題標籤。然而,當我嘗試重命名文件的標題標記它給我的錯誤:os.rename()不能在我的python腳本中工作

WindowsError: [Error 2] The system cannot find the file specified 

這裏是我的代碼:

from hsaudiotag import auto 
import os 

def main(): 
    for filename in os.listdir('./itunes and music/F14/'): 
     print(filename) 
     os.rename(filename, filename[2:]) 
     myfile = auto.File('./itunes and music/F14/'+filename) 
     print(myfile.title) 
     if filename.endswith(".mp3"): 
      print('3') 
      os.rename(filename, myfile.title+".mp3") 
     elif filename.endswith(".m4a"): 
      print('4a') 
      os.rename(filename, myfile.title+".m4a") 
     elif filename.endswith(".m4p"): 
      print('4p') 
      os.rename(filename, myfile.title+".m4p") 

main() 

所有的打印報表,只是爲了調試,他們都工作正常。這只是os.rename()函數不是的。

+0

文件名是否正確打印? –

+0

是的,所有的文件名正在打印確定。 – Sonofblip

回答

6

指定文件路徑,而不僅僅是文件名。

from hsaudiotag import auto 
import os 

def main(): 
    d = './itunes and music/F14/' 
    for filename in os.listdir(d): 
     print(filename) 
     filepath = os.path.join(d, filename) 
     os.rename(filepath, filepath[2:]) 
     myfile = auto.File(filepath) 
     print(myfile.title) 
     if filename.endswith(".mp3"): 
      print('3') 
      os.rename(filepath, os.path.join(d, myfile.title+".mp3")) 
     elif filename.endswith(".m4a"): 
      print('4a') 
      os.rename(filepath, os.path.join(d, myfile.title+".m4a")) 
     elif filename.endswith(".m4p"): 
      print('4p') 
      os.rename(filepath, os.path.join(d, myfile.title+".m4p")) 

main() 
+0

這適用於.m4a和.m4p文件中的所有.mp3文件,我仍然收到: WindowsError:[錯誤123]文件名,目錄名稱或卷標語法不正確 – Sonofblip

+0

@ user2528556,檢查是否標題包含文件名無效的字符。 '\ /:*? < > |'。替換這些字符。 – falsetru