Heim > Artikel > Backend-Entwicklung > Es ist beängstigend, darüber nachzudenken, den USB-Stick anzuschließen und mit der Ausführung des Python-Codes zu beginnen
Ein plötzlicher Gedanke: Wenn Sie den USB-Stick anschließen, können Sie das Programm automatisch auf dem USB-Stick ausführen. Nach der Überprüfung habe ich festgestellt, dass es nur unter Windows verfügbar ist. Sie können auch nach den Details suchen (Suchbegriff „USB-Autorun“). Wenn ich jedoch beispielsweise beim Einstecken eines USB-Sticks möchte, dass die wichtigen Dateien auf dem USB-Stick im Hintergrund automatisch auf den lokalen Speicherort kopiert oder auf einen Server hochgeladen werden, ohne dass es jemand merkt, dann ist spezielle Softwareunterstützung erforderlich.
Also dachte ich mir, könnte ich ein Programm in Python schreiben und es im Hintergrund laufen lassen? Immer wenn ein USB-Stick eingesteckt wird, werden wichtige darauf befindliche Dateien automatisch kopiert.
Zuerst öffnen wir das Computerterminal und geben das Verzeichnis /Volumes ein, und Sie können feststellen, dass es darunter gemountet ist Das heißt, wir müssen dieses Verzeichnis nur zu einem festgelegten Zeitpunkt scannen. Wenn in diesem Verzeichnis ein neuer Ordner angezeigt wird, wurde wahrscheinlich ein USB-Stick eingesteckt.
Mein Design ist so: Verwenden Sie die Funktion time.sleep(3), um das Programm am Laufen zu halten, und überprüfen Sie alle drei Sekunden das Verzeichnis /Volumes/. Kopieren Sie diese in einen anderen Ordner.
Wie der Titel schon sagt, haben wir wirklich nur 10 Zeilen (eigentlich 11 Zeilen, um es zusammenzustellen:) verwendet, um diesen „Virus“ zu vervollständigen. Wir können feststellen, dass alle Verzeichnisse auf dem USB-Stick eine halbe Minute nach dem Einstecken im Home-Verzeichnis abgelegt werden.
Wir haben gerade ein sehr einfaches Skript geschrieben, um die Machbarkeit dieser Idee zu testen, aber es gibt immer noch Probleme. Der Grund, warum wir alle Dateien auf dem USB-Flash-Laufwerk schnell kopieren konnten, lag darin, dass sich nur zwei oder drei Dateien auf dem USB-Flash-Laufwerk befanden und die Größe 15 MB nicht überschritt. Wenn sich auf dem Ziel-USB-Datenträger viele Filme, Musik und Dateien befinden, die wir nicht benötigen, sollte unser Programm in der Lage sein, diese zu überspringen und nur einige wichtige Dateien wie .docx oder .ppt-Dateien auszuwählen oder nur die zuletzt verwendeten Dateien zu kopieren geänderte Dateien oder schließen Sie alle Dateien aus, die größer als 5 MB sind. Können wir das natürlich in Python machen?
Lassen Sie uns ein Beispiel geben.
Ich habe den Testwalk-Ordner in einem bestimmten Verzeichnis erstellt. Es gibt drei Dateien file123.txt und drei Ordner file4.txt und Ordner4 in Ordner1
Jetzt testen wir es.
root speichert den aktuellen Speicherort. Es werden alle Ordner unter ./testwalk/ als Stammverzeichnis verwendet und nach unten durchsucht. „Verzeichnisse einzeln anzeigen“ B. 3M, kopieren Sie es einfach nach Hause und verwerfen Sie es, wenn es größer als der Wert ist.
Shutil-Modul
Nehmen wir nun den Ordner gerade als Beispiel. Wenn Sie Datei1.txt in Ordner2 kopieren möchten:
Es gibt viele Tools in Shutil, die ich nicht verwenden werde gehen Sie hier ins Detail.
os.path.getsize() bestimmt die Größe
Hier müssen wir nur eine Dateigröße von weniger als 3 MB auswählen, 3M = 3 * 1024 kB = 3 * 1024 * 1024 Byte.
In Kombination mit Shutil.copy2 können wir die Datei der ausgewählten Größe kopieren unser Zielordner
Hier benötigen wir reguläre Ausdrücke, die uns helfen.
Es gibt viele Inhalte zu regulären Ausdrücken, und in „Python Core Programming“ ist ihnen ein ganzes Kapitel gewidmet, sodass wir nicht näher darauf eingehen.
Wie folgt ermöglichen wir das Kopieren des angegebenen Dateisuffixes und der angegebenen Dateigröße in unsere Zieldatei:
Verwenden Sie komplexere reguläre Ausdrücke, um die Datei besser zu spezifizieren Typ
Zu diesem Zeitpunkt habe ich im Verzeichnis eine Datei mit dem Namen newfile erstellt
Kurz gesagt, durch Filtern der Änderungszeit jeder Datei kann nur die aktuellste kopiert werden Dateien oder Dateien, die in einem bestimmten Zeitraum geändert oder hinzugefügt wurden, ist diese Funktion in bestimmten Situationen nützlich.
Eigentlich handelt es sich dabei nur um ein kleines Programm, nicht um einen ausgefeilten Schadcode. Anhand dieses Beispiels möchte ich die leistungsstarke Fähigkeit von Python zur Dateiverarbeitung demonstrieren und die Begeisterung aller für das Lernen wecken. Die oben genannten Implementierungen basieren alle auf MacOS und sollten mit geringfügigen Änderungen auch unter Windows erfolgreich sein. Die oben genannten Techniken dienen nur dem Lernen und sollten nicht für andere Aktivitäten verwendet werden.
Das obige ist der detaillierte Inhalt vonEs ist beängstigend, darüber nachzudenken, den USB-Stick anzuschließen und mit der Ausführung des Python-Codes zu beginnen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!