系统调用,在终端中打印输出

时间:2018-03-21 09:35:43

标签: python-3.x

我们在终端中键入的终端命令可能会在终端上打印一些输出。当我们在python脚本中使用此命令并调用系统调用时说:

os.system('ls')  

我们确实获得了输出,但不知何故它返回一个整数来表示该过程的成功执行:

>>> x = os.system('ls')    #prints some output
>>> x
>>> 0

我需要一个函数将x中的输出存储为我需要解析的字符串。执行此操作的python函数是什么?

1 个答案:

答案 0 :(得分:1)

您将使用子流程模块。

from subprocess import PIPE, Popen
proc = Popen(["ls"], stdout=PIPE)
stdout, stderr = proc.communicate()

或者,如果您使用的是Python 3.5或更高版本,则建议运行。

import subprocess

completed = subprocess.run(["ls", "-l"], stdout=subprocess.PIPE, encoding="utf-8")

#output is stored in completed.stdout