Python3 sous-processus de sortie

Je suis désireux d'exécuter Linux word count utilitaire wc pour déterminer le nombre de lignes actuellement dans le /var/log/syslog, afin que je puisse détecter qu'il grandit. J'ai essayé de test différents, et alors que je reçois les résultats de wc, il comprend à la fois le nombre de lignes ainsi que la commande (par exemple, la var/log/syslog).

Il est donc de retour:
1338 /var/log/syslog
Mais je veux seulement le nombre de lignes, donc je veux enlever le /var/log/syslog partie, et il suffit de garder 1338.

J'ai essayé de convertir en chaîne de bytestring, puis décapage du résultat, mais pas de joie. Même histoire pour la conversion de chaîne et de décapage, de décodage, etc - tous ne parviennent pas à produire la sortie, je suis à la recherche d'.

Ce sont quelques exemples de ce que je reçois, avec 1338 lignes dans syslog:

  • b'1338 /var/log/syslog\n'
  • 1338 /var/log/syslog

Voici un code de test que j'ai écrit pour essayer de crack et de cette noix, mais pas de solution:

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))    

La sortie de ce est:

  • 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

InformationsquelleAutor user2565677 | 2013-08-14