Wyjście podprocesu Python3
Chcę uruchomić narzędzie do obliczania słów w systemie Linux, aby określić liczbę linii znajdujących się obecnie w / var / log / syslog, dzięki czemu mogę wykryć, że rośnie. Próbowałem różnych testów i chociaż otrzymałem wyniki z wc, zawiera ono zarówno liczbę linii, jak i polecenie (np. Var / log / syslog).
Wraca więc: 1338 / var / log / syslog Ale chcę tylko liczbę linii, więc chcę usunąć część / var / log / syslog i po prostu zachować 1338.
Próbowałem przekonwertować go na ciąg znaków z testowania, a następnie usunąć wynik, ale bez radości. Ta sama historia konwersji na łańcuch i rozbiórki, dekodowanie itp. - wszystko to nie udaje się uzyskać wyjścia, którego szukam.
Oto kilka przykładów tego, co otrzymuję, z 1338 liniami w syslog:
b'1338 / var / log / syslog1338 / var / log / syslogOto kod testowy, który napisałem, aby spróbować złamać tę nakrętkę, ale nie ma rozwiązania:
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))
Wynik tego jest:
2A stdoutdata: b'1338 / var / log / syslog
2B stdoutdata: 1338 / var / log / syslog
2C stdoutdata: 1338 / var / log / syslog
2D stdoutdata: 1338 / var / log / syslog