Saída do subprocesso Python3
Eu estou querendo executar o utilitário de contagem de palavras do Linux wc para determinar o número de linhas atualmente no / var / log / syslog, para que eu possa detectar que está crescendo. Eu tentei vários testes e, enquanto recebo os resultados do wc, ele inclui tanto a contagem de linhas quanto o comando (por exemplo, var / log / syslog).
Então ele está retornando: 1338 / var / log / syslog Mas eu só quero a contagem de linhas, então eu quero remover a porção / var / log / syslog, e apenas manter 1338.
Eu tentei convertê-lo para string de bytestring e, em seguida, tirando o resultado, mas sem alegria. Mesma história para converter em string e stripping, decoding, etc - todos falham em produzir a saída que estou procurando.
Estes são alguns exemplos do que eu recebo, com 1338 linhas no syslog:
b'1338 / var / log / syslog \ n '1338 / var / log / syslogAqui está um código de teste que eu escrevi para tentar quebrar essa porca, mas nenhuma solução:
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))
A saída disso é:
2A stdoutdata: b'1338 / var / log / syslog \ n '
2B stdoutdata: 1338 / var / log / syslog
2d stdoutdata: 1338 / var / log / syslog
Stdoutdata 2D: 1338 / var / log / syslog