2017-01-10 10 views
1

Pythonで、ファイルの現在と目的のパスを含む辞書があります。Pythonで辞書内の参照されたファイルを移動する

files = { 
    'C:\\Users\\a\\A\\A.jpg': 'C:\\Users\\a\\A\\test_a\\A.jpg', 
    'C:\\Users\\a\\B\\B.jpg': 'C:\\Users\\a\\B\\test_a\\B.jpg', 
    'C:\\Users\\a\\C\\C.jpg': 'C:\\Users\\a\\test_a\\C.jpg' 
} 

マップの項目をshutil.move()関数の引数として使用するにはどうすればよいですか?私は成功せずにいくつかの方法を試みた。あなたは、単に辞書の(key,value)タプルを反復、およびこれらにshutil.move関数を呼び出す

for frm,to in files.items(): 
    shutil.move(frm,to) 

:何について

+0

は、あなたがしようとしたものを私たちを見ることができますか?キーと値のペアで何が起こると思いますか? 'for source.items():shutil.move(source、dest)'をカバーしますか? –

答えて

5

私が見る唯一の問題は、おそらくディレクトリを最初に構築する必要があることです。それ以外の場合、オブジェクトを移動すると失敗する可能性があります。あなたは、まずos.path.dirnameを検出することにより、これを行うディレクトリが存在し、そのようなディレクトリを作成していない場合はどうかを検出することができます

#only if you are not sure the directory exists 
for frm,to in files.items(): 
    directory = os.path.dirname(to) 
    os.makedirs(directory,exist_ok=True) #create a directory if it does not exists 
    shutil.move(frm,to) 
+1

ありがとうございます!私は 'items()'関数を使うのを忘れていました..... – user2666249

関連する問題