Python subprocess: Wie man die Ausgabe eines Prozesses in die Eingabe eines anderen Prozesses piped
Dies ist ein Beispiel, wie man einen Prozess startet, dessen Ausgabe in die Eingabe eines anderen Subprozesses gepiped wird, dessen Ausgabe an Python übergeben wird.
In diesem Beispiel wird der Prozess xz verwenden, um Daten aus input.txt.xz zu dekomprimieren, die wiederum an sha512sum übergeben werden, um die SHA512-Prüfsumme der unkomprimierten Eingabedaten zu berechnen.
Ein äquivalenter Shell-Befehl wäre xz --decompress --stdout input.txt.xz | sha512sum.
Vollständiger Quellcode
pipe_example.py
import subprocess
file_path = "input.txt.xz"
# Die Datei on-the-fly dekomprimieren und die SHA512-Prüfsumme berechnen
decompress_process = subprocess.Popen(['xz', '--decompress', '--stdout', file_path], stdout=subprocess.PIPE)
checksum_process = subprocess.run(['sha512sum'], stdin=decompress_process.stdout, stdout=subprocess.PIPE, text=True)
decompress_process.stdout.close()
decompress_process.wait()
# SHA512-Prüfsumme aus der Befehlsausgabe extrahieren
sha512sum = checksum_process.stdout.split()[0]
print(sha512sum)Check out similar posts by category:
Python
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow