我想运行Linux字数统计实用程序wc来确定/ var / log / syslog中当前的行数,以便可以检测到它正在增长。我尝试了各种测试,虽然我从wc获得了结果,但它包括行数和命令(例如var / log / syslog)。
所以它返回了:1338 / var / log / syslog但是我只想要行数,所以我想剥离/ var / log / syslog部分,只保留1338。
我曾尝试将其从字节串转换为字符串,然后剥离结果,但并不高兴。转换为字符串以及剥离,解码等的故事都是一样的-所有这些都无法产生我想要的输出。
这些是我得到的一些示例,在syslog中有1338行:
这是我为尝试破解此问题而编写的一些测试代码,但没有解决方案:
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))
输出是:
2A stdoutdata:b‘1338 / var / log / syslog \ n’
2B stdoutdata:1338 / var / log / syslog
2C标准输出数据:1338 / var / log / syslog
2D stdoutdata:1338 / var / log / syslog
我建议您subprocess.getoutput()按其实际用途来使用- 在shell中运行命令并获取其字符串输出(而不是字节字符串输出)。然后,您可以在空白处分割并从返回的字符串列表中获取第一个元素。
subprocess.getoutput()
尝试这个:
import subprocess stdoutdata = subprocess.getoutput("wc --lines /var/log/syslog") print("stdoutdata: " + stdoutdata.split()[0])