Ich möchte das Linux-Wortzahl-Dienstprogramm wc ausführen, um die Anzahl der Zeilen zu ermitteln, die sich derzeit im Verzeichnis/var/log/syslog befinden, damit ich feststellen kann, dass es wächst. Ich habe verschiedene Tests ausprobiert, und während ich die Ergebnisse von wc zurückbekomme, enthält es sowohl die Zeilenzählung als auch den Befehl (z. B. var/log/syslog).Python3-Subprozess-Ausgabe
es ist so Rückkehr: 1338/var/log/syslog Aber ich will nur die Zeilenzahl, so möchte ich das Verzeichnis/var/log/syslog Teil abzustreifen, und halten nur 1338
I habe versucht, es in String aus Bytestring zu konvertieren und dann das Ergebnis zu strippen, aber keine Freude. Die gleiche Geschichte für die Umwandlung in Strings und Stripping, Decodierung usw. - alle erzeugen nicht die Ausgabe, nach der ich suche.
Dies sind nur einige Beispiele dafür, was ich bekommen, mit 1338 Zeilen in syslog:
- b'1338/var/log/syslog \ n‘
- 1338/var/log/syslog
Hier einiger Test-Code ich geschrieben habe diese Mutter zu versuchen und 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 von dieser ist:
2A stdoutdata: b'1338/var/log/syslog \ n‘
2B stdoutdata: 1338/var/log/syslog
2C stdoutdata: 1338/var/log/syslog
2D stdoutdata: 1338/var/log/syslog
Dank! Getestet, und es hat funktioniert. Hatte viel recherchiert, das nie gesehen. Dang! – user2565677
Sie sollten gewarnt werden, dass der 'subprocess.getoutput' zu der Kategorie * Legacy Shell Invocation Functions * (http://docs.python.org/3/library/subprocess.html#subprocess.getoutput) gehört. – pepr
@pepr Was bedeutet die Bezeichnung "Vermächtnis" praktisch? Ich sehe keine Zeitleiste zum Entfernen, ab 3.5.0a0. (Kann anderswo definiert werden?) – belacqua