Python3-Unterprozessausgabe
Ich möchte das Linux-Word Count-Dienstprogramm wc ausführen, um die Anzahl der Zeilen im Verzeichnis / var / log / syslog zu bestimmen, damit ich feststellen kann, dass es wächst. Ich habe verschiedene Tests ausprobiert, und obwohl ich die Ergebnisse von wc zurückerhalte, enthält sie sowohl die Zeilenanzahl als auch den Befehl (z. B. var / log / syslog).
Es wird also zurückgegeben: 1338 / var / log / syslog Aber ich möchte nur die Zeilenanzahl, also möchte ich den Teil / var / log / syslog entfernen und einfach 1338 behalten.
Ich habe versucht, es vom Bytestring in einen String umzuwandeln und dann das Ergebnis zu entfernen, aber keine Freude. Dieselbe Geschichte für das Konvertieren in String und Strippen, Dekodieren usw. - alle produzieren nicht die Ausgabe, nach der ich suche.
Dies sind einige Beispiele für das, was ich mit 1338 Zeilen im Syslog erhalte:
b'1338 / var / log / syslog \ n '1338 / var / log / syslogHier ist ein Testcode, den ich geschrieben habe, um diese Nuss zu knacken, aber keine Lösung:
import subprocess
#check_output returns byte string
stdoutdata = subprocess.check_output("wc --lines /var/log/syslog", shell=True)
print("2A stdoutdata: " + str(stdoutdata))
stdoutdata = stdoutdata.decode("utf-8")
print("2B stdoutdata: " + str(stdoutdata))
stdoutdata=stdoutdata.strip()
print("2C stdoutdata: " + str(stdoutdata))
Die Ausgabe davon ist:
2A Standarddaten: b'1338 / var / log / syslog \ n '
2B Standarddaten: 1338 / var / log / syslog
2C-Standarddaten: 1338 / var / log / syslog
2D-Standarddaten: 1338 / var / log / syslog