当我输入命令时,如何让 Python 查看终端输出的内容?
How do I let Python see what Terminal outputs when I enter a command?
我想在 macOS Sierra Python 上 运行 一个程序,在我自动输入命令后检查终端的输出。例如,我会在终端中写:
$ pwd
然后终端会输出如下内容:
/Users/username
我如何 Python 扫描终端输出的内容并将其作为字符串设置为变量?
>>>output = (whatever Terminal outputs)
>>>print (output)
"/Users/username"
顺便说一句,其他论坛并没有详细解释如何在 macOS 中执行此操作。因此,这不是任何论坛的副本。
您可以将输出通过管道传输到文件并读取文件。
$ pwd > output.txt
然后读取文件并根据其内容采取进一步的行动。
使用 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()
,这将生成一个由 space.
分隔的子字符串列表
subprocess.check_output("ls -l /".split())
注意:我在 Windows 和 Gnu on Windows 上使用 Python3,所以我有 \r\n
行结尾和 pwd
.
我想在 macOS Sierra Python 上 运行 一个程序,在我自动输入命令后检查终端的输出。例如,我会在终端中写:
$ pwd
然后终端会输出如下内容:
/Users/username
我如何 Python 扫描终端输出的内容并将其作为字符串设置为变量?
>>>output = (whatever Terminal outputs)
>>>print (output)
"/Users/username"
顺便说一句,其他论坛并没有详细解释如何在 macOS 中执行此操作。因此,这不是任何论坛的副本。
您可以将输出通过管道传输到文件并读取文件。
$ pwd > output.txt
然后读取文件并根据其内容采取进一步的行动。
使用 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()
,这将生成一个由 space.
subprocess.check_output("ls -l /".split())
注意:我在 Windows 和 Gnu on Windows 上使用 Python3,所以我有 \r\n
行结尾和 pwd
.