まず、コンピューターのターミナルを開き、/ Volumes ディレクトリに入ります。今度は、U ディスクを挿入します。このディレクトリの下にマウントされていることがわかります。つまり、このディレクトリを一定の時間にスキャンするだけで済みます。このディレクトリに新しいフォルダーが表示されると、おそらく、 USB フラッシュドライブが挿入されました。
私の設計は次のようなもので、 time.sleep(3) 関数を使用してプログラムを実行し続け、3 秒ごとに /Volumes/ ディレクトリをチェックし、余分なフォルダーがある場合は別のフォルダーにコピーします。
タイトルが示すように、この「ウイルス」を完成させるのに実際に使用したのは 10 行だけです (実際には 11 行です。)。 USB に挿入してから 30 分後には、USB 内のディレクトリがすべてホーム ディレクトリに配置されていることがわかります。
このアイデアの実現可能性をテストするために非常に単純なスクリプトを作成しましたが、まだ問題があります。 USB フラッシュ ドライブ内のすべてのファイルをすぐにコピーできたのは、USB フラッシュ ドライブ内にファイルが 2 ~ 3 つしかなく、サイズが 15M を超えなかったためです。ターゲット USB ディスクに必要のない映画、音楽、ファイルが多数ある場合、プログラムはそれらをスキップし、.docx (.ppt ファイルなど) などの重要なものだけを選択するか、最近使用したファイルのみをコピーできる必要があります。変更されたファイルを削除するか、サイズが 5M を超えるすべてのファイルを除外します。 Python で実行できますか? もちろんです。
例を挙げてみましょう。
#特定のディレクトリに testwalk フォルダーを作成しました。ファイル file123.txt とフォルダー 123 の 3 つがあります。フォルダー 1 にはファイル file4.txt とフォルダー 4 があります。##さあ、テストしましょう
root には現在の場所が保存されます。./testwalk/ の下にあるすべてのフォルダーがルート ディレクトリとして使用されます。下に検索します
ディレクトリを個別に表示
##ファイルを個別に表示
さて、次は必要があります。 USB フォルダーを再帰し、すべてのファイルを見つけてサイズを確認し、サイズがたとえば 3M より小さい場合はホームにコピーし、大きい場合は破棄します。
shutil module今のフォルダーを例に、file1.txt をフォルダー 2 にコピーしたい場合:
shutil には他にも多くのツールがありますが、ここでは詳しく説明しません。
os.path.getsize() はサイズを決定しますos.path.getsize(file name) はバイト単位の値を返します。ファイル サイズの確認に使用する場合は、手動で行う必要があります。読みやすい形式に変換する関数を作成します。 #ここでは、3M 未満のファイル サイズを選択するだけです (3M = 3 * 1024kB = 3 * 1024*1024byte##)# shutil.copy2 と組み合わせると、選択したサイズのファイルをターゲット フォルダーにコピーできます。
ファイルの種類を指定する方法
ここでは正規表現が必要です。 正規表現の内容は多く、「Python コア プログラミング」では 1 章丸々が正規表現の内容に費やされているため、詳しくは説明しません。 次のように、指定されたファイル接尾辞と指定されたファイル サイズをターゲット ファイルにコピーできるようにします: re# をインポートすることを忘れないでください。
# #ファイルの種類をより適切に指定するには、より複雑な正規表現を使用します変更時刻に基づいてファイルをフィルタリングします この時点では、ファイルを作成しましたディレクトリ ファイルの名前は newfile以上がUSB フラッシュ ドライブを接続して Python コードの実行を開始する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。