在以下for循环中,我打印已安装程序的版本号
for program in sub3_required_programs: try: version = subprocess.call([program, '-i']) print version + '\n' except: exit
但我实际上只想要第一行有版本号。如何将打印限制为仅第一行
答案 0 :(得分:4)
你可以这样做:
print version.split("\n")[0]
从输出中获取第一行(在换行符上拆分)。
答案 1 :(得分:2)
str.split('\n')
方法的问题在于换行符可能因平台而异。你可能会有更好的运气:
print version.splitlines()[0]
答案 2 :(得分:0)
将字符串拆分为换行符,并仅使用结果列表的第一个元素:
print version.split('\n')[0]
答案 3 :(得分:0)
当前的打印输出是什么?除非您运行的Python行为版本不同,否则看起来调用的返回状态是唯一分配给版本的内容。
使用参数运行命令。等待命令完成,然后返回 returncode属性。
- docstring for subprocess.call
我敢打赌subprocess.call是罪魁祸首,将它的输出打印到STDOUT。即使您没有该print语句,由于方法的工作方式,您仍会看到子进程调用的所有输出。
要获取实际输出,您可能希望执行更像
的操作lines = subprocess.Popen([program, '-i'], stdout=subprocess.PIPE).communicate()[0]
print lines.splitlines()[0] + '\n'
communicate
调用返回元组(stdoutdata, stderrdata)
。您可以在docs中详细了解相关信息。其他一切都应该是不言自明的。