0
私は次のコードを使用しています。それをやり直すと、やり直すと永遠に実行されます。私はそれが既にそこにあるファイルをスキップさせ、すべてのファイルがコピーされたら停止するようにしています。既にコピーされたファイルをコピーしないようにするにはどうしたらいいですか?
import os
import shutil
source_dir = r"D:\\Tibi"
target_dir = r"D:\\fileSave/"
extensions = (".mp4", ".CR2")
while True:
try:
for directory, _, file_names in os.walk(source_dir):
for file_name in file_names:
if file_name.endswith(extensions):
source_path = os.path.join(directory, file_name)
target_path = os.path.join(target_dir, file_name)
print("Moving {} to {} from {}".format(file_name, target_dir, directory))
shutil.copy(source_path, target_dir)
except shutil.SameFileError:
print("{} is already in the folder".format(file_name))
すでにそこにあったフォルダ内にファイルが見つかったときにハードストップするため、例外があります。
にそれを十分ですディレクトリ内のすべてのファイルとフォルダのリストを作成し、ファイル
のリストを反復するために使用する
os.listdir()
を使用することができます永遠に走るあなたは決して壊れない「while True」ループでそれを持っています... –だから私は真の声明を取り出します。それが完了したらループを壊すでしょうか?しかし、そこにすでにあるファイルをコピーしないようにするにはどうしたらいいですか? –
あなたの 'os.walk'イテレータが使い果たされたときに停止します。 –