我想在macOS Sierra上运行Python上的程序,在我自动输入命令后检查终端的输出。例如,我会写在终端:
$ pwd
然后终端输出如下内容:
/Users/username
我如何让Python扫描终端输出并将其作为字符串设置为变量?
>>>output = (whatever Terminal outputs)
>>>print (output)
"/Users/username"
顺便说一句,其他论坛没有详细解释如何在macOS中执行此操作。因此,这不是任何论坛的重复。
答案 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
。