当我输入命令时,如何让Python看到终端输出?

时间:2017-07-31 01:35:07

标签: python python-2.7 python-3.x terminal macos-sierra

我想在macOS Sierra上运行Python上的程序,在我自动输入命令后检查终端的输出。例如,我会写在终端:

$ pwd

然后终端输出如下内容:

/Users/username

我如何让Python扫描终端输出并将其作为字符串设置为变量?

>>>output = (whatever Terminal outputs)
>>>print (output)
"/Users/username"

顺便说一句,其他论坛没有详细解释如何在macOS中执行此操作。因此,这不是任何论坛的重复。

2 个答案:

答案 0 :(得分:1)

您可以将输出传输到文件并读取文件。

$ pwd > output.txt

然后阅读文件并根据其内容采取进一步行动。

答案 1 :(得分:1)

使用subprocess模块,它有一些快捷方法,比使用Popen更简单,更简单。

>>> import subprocess
>>> output = subprocess.check_output("pwd")
>>> print(output)
b'L:\\\r\n'

如果您愿意,可以使用output.decode("UTF-8")对此进行解码,也可以使用universal_newlines关键字参数自动完成并排序换行符。

>>> subprocess.check_output("pwd", universal_newlines=True)
'L:\\\n'

编辑:使用@Silvio's明智的建议,传递所有参数,您可以执行以下操作:

subprocess.check_output(["ls", "-l"])

或者,如果您有来自其他地方的字符串,则可以调用.split(),这将生成由空格分隔的子字符串列表。

subprocess.check_output("ls -l /".split())

注意:我在Windows和Gnu on Windows上使用Python3,因此我有\r\n行结尾和pwd