我想在子过程中打印指定的输出 这是我的代码:
from subprocess import check_output
output = check_output(['python3', 'code.py']).decode('ascii')
print(output)
输出为:
Tom
John
如何仅打印Tom
或仅打印John
而不是两者?
我尝试过print(output[0])
打印Tom
,但我只得到T
。
答案 0 :(得分:2)
您只有一个字符串,可以使用任何字符串的函数。
您可以拆分它并创建带有行的列表
lines = output.split('\n')
然后仅显示第一行
print(lines[0])
答案 1 :(得分:1)
让我们看看您已经完成的步骤:
check_output()
,它以bytes的形式返回输出; bytes.decode()
,它返回str。结果是您得到多行字符串。您尝试使用索引0
访问第一行,但是得到的是第一字符而不是第一行。发生了,因为按索引访问字符串将使您从该索引返回char。
要获取第一行,应分割多行字符串的行(将str转换为str列表)。内置功能str.splitlines()
可满足您的需求。
因此,要升级您的代码,我们需要在print()
语句之前再添加一行:
output_lines = output.splitlines()
之后,您可以按索引访问行:
print(output_lines[0])