2016-08-11 15 views
0

私はたくさんのフォルダを調べ、それぞれに行き、特定のファイルの名前を別の名前に変更しようとしています。私はちょうどループの部分を介して突き当たりました。私が持っているコードがあるPythonがフォルダをループして名前を変更するファイル

Root Directory 
Folder 
    File1 
    File2 
    File3 
Folder 
    File1 
    File2 
    File3 

::次のように

私のファイルシステムが見えます

os.chdir(rootDir) 

for folder in os.listdir(): 
    print(folder) 
    os.chdir(rootDir + 'folder') 
    for f in os.listdir(): 
     print(f) 
    os.chdir(rootDir) 

だから、そのフォルダを入力フォルダを移動して、内部のファイルがリストされます私の心にルートディレクトリに戻る

+0

を見たことがありますか? – Michael

答えて

1

はどのようにあなたのコードは、あなたが期待しているものを対に動作してos.walk

import os 
for dir, subdirs, files in os.walk("."): 
    for f in files: 
     f_new = f + 'bak' 
     os.rename(os.path.join(root, f), os.path.join(root, f_new)) 
+0

これはすべての子サブフォルダを介して再帰的に表示されることに注意してください(これは、固体答えはすべて同じ) –

1

os.walkが必要です。それはあなたが反復できる3タプル(dirpath、dirnames、ファイル名)を返します。

+0

本当に私はこの答えの質問に答えていないと思う...(私は彼がサブフォルダなどに再帰したいと思うとは思わない) –

0
def change_files(root_dir,target_files,rename_fn): 
    for fname in os.listdir(root_path): 
     path = os.path.join(root_path,fname) 
     if fname in target_files: 
      new_name = rename_fn(fname) 
      os.move(path,os.path.join(root_path,new_name) 

def rename_file(old_name): 
    return old_name.replace("txt","log") 

change_files("/home/target/dir",["File1.txt","File2.txt"],rename_file) 
関連する問題