BASH和Python结合在一起
对Python来说非常陌生 我有一个带有菜单的Python脚本。在一个选择中,我想启动或调用另一个脚本,但它是BASH。结果放入/tmp中的文本文件中。 我想这样做: 启动Python脚本。在选择菜单时,让它启动BASH脚本。最后返回Python脚本,该脚本处理/tmp中的文件。 这可能吗?我该怎么做?您正在寻找模块,它是标准库的一部分BASH和Python结合在一起,python,Python,对Python来说非常陌生 我有一个带有菜单的Python脚本。在一个选择中,我想启动或调用另一个脚本,但它是BASH。结果放入/tmp中的文本文件中。 我想这样做: 启动Python脚本。在选择菜单时,让它启动BASH脚本。最后返回Python脚本,该脚本处理/tmp中的文件。 这可能吗?我该怎么做?您正在寻找模块,它是标准库的一部分 子流程模块允许您生成新流程,连接到它们的输入/输出/错误管道,并获取它们的返回代码 在Unix系统中,这意味着子进程可以生成新的Unix进程,执行它们的结果,并
子流程
模块允许您生成新流程,连接到它们的输入/输出/错误管道,并获取它们的返回代码
在Unix系统中,这意味着子进程
可以生成新的Unix进程,执行它们的结果,并返回它们的输出。由于bash脚本是作为Unix进程执行的,因此可以非常简单地告诉系统直接运行bash脚本
一个简单的例子:
import subprocess
ls_output = subprocess.check_output(['ls']) # returns result of `ls`
通过将参数串在一起,可以轻松地运行bash脚本。下面是如何使用子流程
的详细说明
子流程
中的所有任务都使用命令,因此有必要了解其工作原理。Python文档提供了调用bash脚本的示例:
>>> import shlex, subprocess
>>> command_line = raw_input()
/bin/vikings -input eggs.txt -output "spam spam.txt" -cmd "echo '$MONEY'"
>>> args = shlex.split(command_line)
>>> print args
['/bin/vikings', '-input', 'eggs.txt', '-output', 'spam spam.txt', '-cmd', "echo '$MONEY'"]
>>> p = subprocess.Popen(args) # Success!
请注意,唯一重要的部分是将参数列表传递给
Popen()
大量重复的问题