[英]In python how can i print only the first line of stdout which results from a shell command
在下面的 for 循环中,我打印安装的程序的版本号
for program in sub3_required_programs: try: version = subprocess.call([program, '-i']) print version + '\n' except: exit
但我实际上只想要具有版本号的第一行。 如何将打印限制为仅第一行
你可以做:
print version.split("\n")[0]
从 output 获取第一行(以换行符分割)。
str.split('\n')
方法的问题在于换行符可能因平台而异。 你可能会有更好的运气:
print version.splitlines()[0]
在换行符处拆分字符串,并仅使用结果列表的第一个元素:
print version.split('\n')[0]
当前打印的 output 是什么? 除非您正在运行行为不同的 Python 版本,否则看起来调用的返回状态是唯一分配给版本的东西。
使用 arguments 运行命令。 等待命令完成,然后返回 returncode 属性。
我敢打赌 subprocess.call 是罪魁祸首,将它的 output 打印到 STDOUT。 即使您没有该打印语句,由于该方法的工作方式,您仍然会看到子进程调用的所有 output。
要获取实际的 output,您可能想做更多类似的事情
lines = subprocess.Popen([program, '-i'], stdout=subprocess.PIPE).communicate()[0]
print lines.splitlines()[0] + '\n'
communicate
调用返回元组(stdoutdata, stderrdata)
。 您可以在docs中阅读有关它的更多信息。 其他一切都应该是不言自明的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.