質問: ディレクトリ内の新しいファイルを監視し、それらを別のディレクトリに移動/名前変更するにはどうすればよいですか? 特定のプロセスが15回繰り返されるたびに、プログラムはoutput.txtという名前の出力テキストファイルを生成します。そうすると、最後のoutput.txtが上書きされます。ただし、ファイルを保持したいので、プログラム内でファイル名を変更することはできません。プログラムと共に、出力ディレクトリを監視し、output.txtファイルを別のディレクトリに移動して名前を変更するスクリプトを実行できますか?
回答: 以下のスクリプトは、定義されたディレクトリ(dr1)に表示される可能性のあるファイルを移動し、名前を変更します。 output_1.txt、output_2.txt`などのファイル名を変更します。ターゲット名が既にディレクトリ2に存在する場合(「ブラインド」選択範囲ではなく)、スクリプトは「アクティブ」に見えるため、開始および停止できます。既存のファイルを上書きするリスクなしにいつでもスクリプトを実行できます。出力ファイルに一意の名前を付け、定義により既存のファイルを上書きしないため、ターゲットディレクトリcanはソースディレクトリと同じになります。使い方 スクリプトを空のファイルにコピーし、rename_save.pyとして保存します 重要なステップ:ヘッドセクションで、新しいファイルをチェックする時間間隔を設定します。時間間隔は、新しいファイルが表示される間隔(15回の反復にかかる時間)よりも(はるかに)短いことを確認してください。さもないと、最後のファイルが移動する前に新しいファイルが作成されます。 また、ヘッドセクションで、ソースディレクトリと、名前を変更したファイルを保存するディレクトリの両方へのパスを設定します。 次のコマンドで実行します: python3 /path/to/rename_save.py 他の(繰り返し)スクリプトの実行中 スクリプト#!/usr/bin/env python3 import shutil import os import time #--- set the time interval to check for new files (in seconds) below # this interval should be smaller than the interval new files appear! t = 1 #--- set the source directory (dr1) and target directory (dr2) dr1 = "/path/to/source_directory" dr2 = "/path/to/target_directory" name = "output_"; extension = ".txt" newname = lambda n: dr2+"/"+name+str(n)+extension while true: newfiles = os.listdir(dr1) for file in newfiles: source = dr1+"/"+file n = 1; target = newname(n) while os.path.exists(target): n = n+1; target = newname(n) shutil.move(source, target) time.sleep(t)