2017-01-03 180 views
0

基本上我已經完成了所有的文件。但是,當實際嘗試重命名文件時,出現錯誤重命名目錄中的文件夾中的所有文件

Traceback (most recent call last): 
    File 

    "C:\Users\CHOMAN\Desktop\Earthquake_1_combine_3_jan\Earthquake_1_combine\wav\sort_inner_wav.py", line 21, in <module> 
     os.rename(file, new_name) 
    FileNotFoundError: [WinError 2] The system cannot find the file specified: 'Audio Track-10.wav' -> 'choman_10.wav' 

直到最後一個打印語句的值是正確的。不知道如何重命名它。 在wav文件夾下有32個子文件夾,裏面有大約10個.wav文件。

import os 

rootdir = r'C:\Users\CHOMAN\Desktop\Earthquake_1_combine_3_jan\Earthquake_1_combine\wav' 

for subdir, dirs, files in os.walk(rootdir): 
    for file in files: 

     filepath = subdir+os.sep+file 
     if filepath.endswith('.wav'): 

      f_name, f_ext=(os.path.splitext(file)) 

      if len(f_name) == 11: 
       f_name = f_name+'-0' 

      f_title,f_num =f_name.split('-') 
      f_num=f_num.zfill(2) 

      new_name = '{}_{}{}'.format('choman',f_num,f_ext) 
      print (file, new_name) 
      os.rename(file, new_name) 
+0

重命名是否需要完整路徑? –

+0

是的,這讓我感到困惑。基本上wav下有32個文件夾,每個文件夾中有大約10個.wav文件。我不確定我現在必須給予什麼樣的道路? – choman

回答

0

所有你需要的是:

os.rename(filepath, subdir+os.sep+new_name) 

那是因爲你需要完整的路徑。

+1

當合並路徑時,我會推薦'os.path.join':'os.path.join(subdir,new_name)' – user783836

0

如果您沒有在'rootdir'的相同位置運行此腳本並且存在子目錄,則需要指定源文件和目標文件的絕對路徑。否則,該文件將不會被找到。

# python 2.7 
os.rename(filepath, os.path.join(subdir, new_name)) 

# python >= 3.3 
os.rename(file, new_name, subdir, subdir) 
相關問題