2017-02-09 3 views
0

私は多くのフォルダを持っています。私は、ファイルの.zipファイル形式を作成し、別のディレクトリに移動する場合:Pythonでのマルチタスク、再フォーマットと移動

for (dir, dirs, files) in os.walk(directory): 
     for filename in files: 
      # make zip files 
      if filename.endswith(".zip"): 
       # move created zip files 
       os.rename(dir + '/' + filename, new + '/' + directory + '/' + filename) 

問題は後のプログラムは、ジップ拡張子を持つ作成したファイルを見つけることができませんでした、zipファイルを作成する、ということです。 zip形式を作成して別のフォルダに移動したい

答えて

1

あなたがshutil libに使用することができます。

import shutil 
shutil.move("path/to/current/file.foo", "path/to/new/destination/for/file.foo") 

shutil.move(SRC、DST)

が再帰的にファイルやディレクトリ(SRC)を移動し、別の場所(DST)へ。

宛先が既存のディレクトリの場合、srcはそのディレクトリ 内に移動されます。宛先が既に存在するが、 ディレクトリでない場合は、os.rename()セマンティクスによって上書きされる可能性があります。

宛先が現在のファイルシステム上にある場合、os.rename()は が使用されます。それ以外の場合、srcはdstにコピーされ(シャットル・コピー2()を使用して)、次に が削除されます。


また、アーカイブファイルのためのshutilを使用することができます。

shutil.make_archive(BASE_NAME、フォーマット[、ROOT_DIR [、BASE_DIR [、冗長 [、[もしdry_run、所有者[、グループ[、logger]]]]]])

ファイル(zipやtarなど)を作成し、その名前を返します。詳細情報については

私は私の質問を編集したshutil documentation

+0

をお読みください。私の問題は、たくさんのファイルがある場合、os.walk(ディレクトリ)は新しく作成されたファイルではなく古いファイルを読み込むことです。 – TheNone

+0

@ TheNone、ファイル名を変更すると、os.walkを再度実行するまで変更内容は表示されません。 os.walkのコード行が渡されると、結果が得られます。変更を確認するには、新しい結果を得るようにos.walkに再度呼び出す必要があります。ループの反復中に変更を見ることはできません。 –

+0

は動的にループする方法はありますか? 1 - zipファイルを作成し、2つのファイルを移動し、そして... – TheNone

関連する問題