2017-01-03 15 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フォルダの下に約10個の.wavファイルがある32個のサブフォルダがあります。

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) 
関連する問題