Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
BASH和Python结合在一起_Python - Fatal编程技术网

BASH和Python结合在一起

BASH和Python结合在一起,python,Python,对Python来说非常陌生 我有一个带有菜单的Python脚本。在一个选择中,我想启动或调用另一个脚本,但它是BASH。结果放入/tmp中的文本文件中。 我想这样做: 启动Python脚本。在选择菜单时,让它启动BASH脚本。最后返回Python脚本,该脚本处理/tmp中的文件。 这可能吗?我该怎么做?您正在寻找模块,它是标准库的一部分 子流程模块允许您生成新流程,连接到它们的输入/输出/错误管道,并获取它们的返回代码 在Unix系统中,这意味着子进程可以生成新的Unix进程,执行它们的结果,并

对Python来说非常陌生

我有一个带有菜单的Python脚本。在一个选择中,我想启动或调用另一个脚本,但它是BASH。结果放入/tmp中的文本文件中。 我想这样做: 启动Python脚本。在选择菜单时,让它启动BASH脚本。最后返回Python脚本,该脚本处理/tmp中的文件。 这可能吗?我该怎么做?

您正在寻找模块,它是标准库的一部分

子流程
模块允许您生成新流程,连接到它们的输入/输出/错误管道,并获取它们的返回代码

在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()

大量重复的问题