##ふと思ったのですが、USB を接続すると、USB 上のプログラムを自動的に実行できないでしょうか。調べてみるとWindowsのみで、詳細は検索(検索キーワードusb autorun)することもできます。ただし、たとえば、USB が接続されているときに、USB 内の重要なファイルが自動的にローカルにコピーされるか、バックグラウンドで誰にも気付かれずにサーバーにアップロードされるようにしたい場合は、特別なソフトウェアの支援が必要です。
そこで私は、Python でプログラムを作成し、バックグラウンドで実行できるようにできないかと考えました。 USB フラッシュ ドライブが挿入されるたびに、その中の重要なファイルが自動的にコピーされます。
U ディスクが挿入されているかどうかを確認するにはどうすればよいですか?
まず、コンピュータのターミナルを開き、/ Volumes と入力します。この時点で、U ディスクを挿入すると、このディレクトリの下にマウントされていることがわかります。つまり、このディレクトリを一定の時間にスキャンするだけで済みます。このディレクトリに新しいフォルダーが表示された場合は、おそらく、 U ディスクが挿入されていることを確認します。
私のデザインは次のようなものです。time.sleep(3) 関数を使用してプログラムを実行し続け、3 秒ごとに /Volumes/ ディレクトリをチェックします。さらにフォルダーがある場合は、それをコピーします。別のフォルダー。
#タイトルが示すように、この「ウイルス」を完成させるのに実際に使用したのは 10 行だけです (実際には 11 行で構成されています)。 USB に挿入してから 30 分後には、USB 内のディレクトリがすべてホーム ディレクトリに配置されていることがわかります。
ファイルを選択的にコピーする方法は?
このアイデアの実現可能性をテストするために非常に単純なスクリプトを作成しましたが、まだ問題があります。 USB フラッシュ ドライブ内のすべてのファイルをすぐにコピーできたのは、USB フラッシュ ドライブ内にファイルが 2 ~ 3 つしかなく、サイズが 15M を超えなかったためです。ターゲット USB ディスクに必要のない映画、音楽、ファイルが多数ある場合、プログラムはそれらをスキップし、.ppt ファイルなどの .docx などの重要なものだけを選択するか、最近使用したファイルのみをコピーできる必要があります。変更されたファイルを削除するか、サイズが 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 (ファイル名) はバイト単位の値を返します。ファイル サイズの表示に使用される場合、読みやすい形式に変換する関数を手動で記述する必要があります。
#ここでは、3M 未満のファイル サイズを選択するだけです。3M = 3 * 1024kB = 3 * 1024*1024byte
# shutil.copy2 と組み合わせると、選択したサイズのファイルをターゲット フォルダーにコピーできます
ファイル タイプの指定方法
ここでは正規表現が必要ですここで私たちを助ける公式が登場します。
正規表現の内容は多く、「Python コア プログラミング」では 1 章丸々が正規表現の内容に費やされているため、詳しくは説明しません。
次のように、指定されたファイル接尾辞と指定されたファイル サイズをターゲット ファイルにコピーできるようにします:
re
# をインポートすることを忘れないでください。
##より複雑な正規表現を使用してファイル タイプを適切に指定します
#変更時刻に基づいてファイルをフィルタリングします
##今回は、ディレクトリに newfile というファイルを作成しました。
つまり、各ファイルをフィルタリングすることによってのみコピーできます。この機能は、最近または特定の期間中に変更または追加されたファイルに対して特定の状況で役立ちます。
概要
実際、これは単なる小さなプログラムであり、洗練された悪意のあるコードではありません。この例を使用して、Python の強力なファイル処理能力を実証し、学習に対するみんなの熱意を呼び起こしたいと思います。上記の実装はすべて macos に基づいています。Linux も同様であるはずです。Windows もわずかな変更で成功する可能性があります。上記のテクニックは学習専用であり、他のアクティビティには使用しないでください。
以上が考えると恐ろしいです。USB フラッシュ ドライブを接続し、Python コードの実行を開始します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。