小编use*_*677的帖子

Python3子进程输出

我想运行Linux字数统计实用程序wc来确定当前在/ var/log/syslog中的行数,因此我可以检测到它正在增长.我尝试了各种测试,当我从wc获得结果时,它既包括行数也包括命令(例如,var/log/syslog).

所以它返回:1338/var/log/syslog但我只想要行数,所以我想剥离/ var/log/syslog部分,并保持1338.

我已经尝试将它从bytestring转换为字符串,然后剥离结果,但没有快乐.转换为字符串和剥离,解码等的相同故事 - 都无法产生我正在寻找的输出.

这些是我得到的一些例子,在syslog中有1338行:

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

这是我编写的一些测试代码,试图破解这个问题,但没有解决方案:

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))    
Run Code Online (Sandbox Code Playgroud)

这个输出是:

  • 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

python subprocess bytestring python-3.x

39
推荐指数
3
解决办法
5万
查看次数

标签 统计

bytestring ×1

python ×1

python-3.x ×1

subprocess ×1