我想使用 Python 创建一个简单的“虚拟 bash”脚本,它接收命令并返回 stdio 输出。像这样的东西:
>>> output = bash('ls')
>>> print output
file1 file2 file3
>>> print bash('cat file4')
cat: file4: No such file or directory
有谁知道允许这种情况发生的模块/功能?我找不到一个。
我想使用 Python 创建一个简单的“虚拟 bash”脚本,它接收命令并返回 stdio 输出。像这样的东西:
>>> output = bash('ls')
>>> print output
file1 file2 file3
>>> print bash('cat file4')
cat: file4: No such file or directory
有谁知道允许这种情况发生的模块/功能?我找不到一个。
该subprocess
模块包含所有问题的答案。特别是,check_output
似乎完全按照您的意愿行事。页面示例:
>>> subprocess.check_output(["echo", "Hello World!"])
'Hello World!\n'
>>> subprocess.check_output("exit 1", shell=True)
Traceback (most recent call last):
...
subprocess.CalledProcessError: Command 'exit 1' returned non-zero exit status 1
如果 shell 为 True,指定的命令将通过 shell 执行。如果您将 Python 主要用于它在大多数系统 shell 上提供的增强控制流,并且仍然希望访问其他 shell 功能,例如文件名通配符、shell 管道和环境变量扩展,这将很有用。