[英]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.