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 es finden Es wird in diesem Verzeichnis bereitgestellt. Mit anderen Worten: Wir müssen dieses Verzeichnis nur zu einem bestimmten Zeitpunkt scannen. Wenn in diesem Verzeichnis ein neuer Ordner angezeigt wird, wurde wahrscheinlich ein USB-Stick eingesteckt.
Mein Design sieht so aus: 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 die ganze Zahl zu bilden:) 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?
Geben wir ein Beispiel.
Ich habe den Testwalk-Ordner in einem bestimmten Verzeichnis erstellt. Es gibt drei Dateien, Datei 123.txt, und drei Ordner, Ordner 123. Es gibt die Dateien Datei 4.txt und Ordner 4 in Ordner 1. Jetzt testen wir it
root speichert den aktuellen Speicherort. Es werden alle Ordner unter ./testwalk/ als Stammverzeichnis verwendet und nur nach unten gesucht. Verzeichnisse anzeigen
Dateien einzeln anzeigen
Okay, jetzt müssen wir den USB-Ordner rekursieren, alle Dateien finden, die Größe überprüfen, wenn sie kleiner als z. B. 3 MB ist, sie nach Hause kopieren, wenn sie größer ist, verwerfen.
Nehmen wir nun den Ordner gerade als Beispiel. Wenn Sie Datei1.txt in Ordner2 kopieren möchten:
Es gibt viele Auf andere Tools werde ich hier in Shutil nicht näher eingehen.
os.path.getsize (Dateiname) gibt einen Wert in Bytes zurück. Wenn es zur Überprüfung der Dateigröße verwendet wird, müssen wir dies manuell tun Schreiben Sie eine Funktion, die es in eine leicht lesbare Form umwandelt.
Hier müssen wir nur die Dateigröße kleiner als 3M auswählen, 3M = 3 * 1024kB = 3 * 1024*1024byte
kann mit kombiniert werden Shutil.copy2 ausgewählt Dateien unterschiedlicher Größe werden in unseren Zielordner kopiert
Hier benötigen wir reguläre Ausdrücke, die uns helfen.
Reguläre Ausdrücke enthalten viel Inhalt, und in „Python Core Programming“ ist ihnen ein ganzes Kapitel gewidmet, sodass wir nicht näher darauf eingehen.
Wie folgt erlauben wir das Kopieren des angegebenen Dateisuffixes und der angegebenen Dateigröße in unsere Zieldatei:
Mehr verwenden Komplexe reguläre Ausdrücke. Die Formel kann den Dateityp besser spezifizieren Kurz gesagt: Durch das Filtern der Änderungszeit jeder Datei können nur die Dateien kopiert werden, die kürzlich oder in einem bestimmten Zeitraum geändert oder hinzugefügt wurden. Diese Funktion ist in bestimmten Situationen nützlich.
Eigentlich soll der Titel nur die Aufmerksamkeit aller auf sich ziehen. Dies ist nur ein kleines Programm und kein Virus.
Ich möchte dieses Beispiel verwenden, um die leistungsstarke Fähigkeit von Python zur Verarbeitung von Dateien zu zeigen und die Begeisterung aller für das Lernen zu wecken.
Die obige Implementierung basiert auf macOS, Linux sollte das gleiche sein, und Windows kann mit geringfügigen Modifikationen auch erfolgreich sein. Die oben genannten Techniken dienen nur dem Lernen und dürfen nicht für andere Verhaltensweisen 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!