在子过程中打印指定的输出

时间:2019-07-10 00:38:47

标签: python python-3.x subprocess output

我想在子过程中打印指定的输出 这是我的代码:

from subprocess import check_output

output = check_output(['python3', 'code.py']).decode('ascii')
print(output)

输出为:

Tom
John

如何仅打印Tom或仅打印John而不是两者? 我尝试过print(output[0])打印Tom,但我只得到T

2 个答案:

答案 0 :(得分:2)

您只有一个字符串,可以使用任何字符串的函数。

您可以拆分它并创建带有行的列表

lines = output.split('\n')

然后仅显示第一行

print(lines[0])

答案 1 :(得分:1)

让我们看看您已经完成的步骤:

  1. 您调用check_output(),它以bytes的形式返回输出;
  2. 然后,您致电bytes.decode(),它返回str

结果是您得到多行字符串。您尝试使用索引0访问第一行,但是得到的是第一字符而不是第一行。发生了,因为按索引访问字符串将使您从该索引返回char。

要获取第一行,应分割多行字符串的行(将str转换为str列表)。内置功能str.splitlines()可满足您的需求。


因此,要升级您的代码,我们需要在print()语句之前再添加一行:

output_lines = output.splitlines()

之后,您可以按索引访问行:

print(output_lines[0])