使用Python运行bash文件

时间:2014-02-25 16:47:52

标签: python bash cygwin popen

我有一个bash文件,我通常使用Cygwin执行。 我需要从我的Python代码中运行这个文件。

我试过了:

for bashfile in files:
    p = Popen(bashfile, cwd=dname) #dname is the current directory of the script
    stdout, stderr = p.communicate()

我也看到了一个类似的问题here,但是当试图以这种方式运行时,它说它无法找到我的bash文件的目录......

有什么想法吗?谢谢! : - )

修改: bashfile有完整路径。

2 个答案:

答案 0 :(得分:2)

您是否需要将其输出直接发送到Python?如果不是这可能是非常快速和简单的解决方案:

os.system("""here some code you use to execute in Terminal""")

答案 1 :(得分:1)

你也可以试试这个,虽然它确实(并且无论你怎么做)都不管目录在哪里。就输出而言,这可能比os方法更清晰。

import commands
cmd="bash ./script.sh"
commands.getoutput(cmd)

如果您需要更改目录:

cmd = "/path/to/your/script/script.sh"

使用此方法的额外好处,与os相比,您可以将输出分配给变量......

fun_times = commands.getoutput("bash ./script.sh")

...而

not_fun_times = os.system("./script.sh")

会抛出错误。

等等。