使用Python运行bash文件

使用Python运行bash文件,python,bash,cygwin,popen,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() 我也看到了一个类似的问题,但是当试图以这种方式运行它时,它会说它找不到我的bash文件的目录 有什么想法吗?谢谢!

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

我试过这个:

for bashfile in files:
    p = Popen(bashfile, cwd=dname) #dname is the current directory of the script
    stdout, stderr = p.communicate()
我也看到了一个类似的问题,但是当试图以这种方式运行它时,它会说它找不到我的bash文件的目录

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


编辑:
bashfile
具有完整路径。

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

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

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

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

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

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

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

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

您也可以尝试这个方法,尽管它确实(并且无论您尝试什么)会影响目录的位置。就输出而言,这可能比
os
方法更简洁

import commands
cmd="bash ./script.sh"
commands.getoutput(cmd)
如果情况是您需要更改目录:

cmd = "/path/to/your/script/script.sh"
与使用操作系统相比,使用此方法的另一个好处是,您可以将输出分配给变量

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

not_fun_times = os.system("./script.sh")
将抛出一个错误


诸如此类。

您也可以尝试此方法,尽管它确实(而且无论您尝试什么)会影响目录的位置。就输出而言,这可能比
os
方法更简洁

import commands
cmd="bash ./script.sh"
commands.getoutput(cmd)
如果情况是您需要更改目录:

cmd = "/path/to/your/script/script.sh"
与使用操作系统相比,使用此方法的另一个好处是,您可以将输出分配给变量

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

not_fun_times = os.system("./script.sh")
将抛出一个错误


诸如此类。

您也可以尝试此方法,尽管它确实(而且无论您尝试什么)会影响目录的位置。就输出而言,这可能比
os
方法更简洁

import commands
cmd="bash ./script.sh"
commands.getoutput(cmd)
如果情况是您需要更改目录:

cmd = "/path/to/your/script/script.sh"
与使用操作系统相比,使用此方法的另一个好处是,您可以将输出分配给变量

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

not_fun_times = os.system("./script.sh")
将抛出一个错误


诸如此类。

您也可以尝试此方法,尽管它确实(而且无论您尝试什么)会影响目录的位置。就输出而言,这可能比
os
方法更简洁

import commands
cmd="bash ./script.sh"
commands.getoutput(cmd)
如果情况是您需要更改目录:

cmd = "/path/to/your/script/script.sh"
与使用操作系统相比,使用此方法的另一个好处是,您可以将输出分配给变量

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

not_fun_times = os.system("./script.sh")
将抛出一个错误




等等。

脚本位于何处,bash文件位于何处?bash文件位于脚本目录的一个子目录中。关键是他们在不同的地方。这有关系吗?如果
bashfile
只是脚本的名称(例如
foo.sh
),请尝试指定脚本的路径
/subdir/foo.sh
。能否提供完整的错误消息?脚本位于何处以及bash文件位于何处?bash文件位于脚本目录的一个子目录中。关键是他们在不同的地方。这有关系吗?如果
bashfile
只是脚本的名称(例如
foo.sh
),请尝试指定脚本的路径
/subdir/foo.sh
。能否提供完整的错误消息?脚本位于何处以及bash文件位于何处?bash文件位于脚本目录的一个子目录中。关键是他们在不同的地方。这有关系吗?如果
bashfile
只是脚本的名称(例如
foo.sh
),请尝试指定脚本的路径
/subdir/foo.sh
。能否提供完整的错误消息?脚本位于何处以及bash文件位于何处?bash文件位于脚本目录的一个子目录中。关键是他们在不同的地方。这有关系吗?如果
bashfile
只是脚本的名称(例如
foo.sh
),请尝试指定脚本的路径
/subdir/foo.sh
。您可以提供完整的错误消息吗?您可以随时检查
os.getcwd()
,甚至通过
os.chdir(“/foo”)
将其更改为其他版本。如果您决定使用os.system,这个示例可能会很有用:非常感谢@andi!我在链接中给出的那个奇怪的解决方案完全把我弄糊涂了。。。非常感谢,现在可以工作了!:-)@Cheshie很乐意帮忙:-)@Cheshie:我不明白。如果
Popen(bashfile,cwd=dname)
找不到
bashfile
,那么
os.system(bashfile)
如何工作呢?您可以随时检查
os.getcwd()!我在链接中给出的那个奇怪的解决方案完全把我弄糊涂了。。。非常感谢,现在可以工作了!:-)@Cheshie很乐意帮忙:-)@Cheshie:我不明白。如果
Popen(bashfile,cwd=dname)
找不到
bashfile
,那么
os.system(bashfile)
如何工作呢?您可以随时检查
os.getcwd()!我在链接中给出的那个奇怪的解决方案完全把我弄糊涂了。。。非常感谢,现在可以工作了!:-)@Cheshie很乐意帮忙:-)@Cheshie:我不明白。如果
Popen(bashfile,cwd=dname)
找不到
bashfile
,那么
os.system(bashfile)
如何工作呢?您可以随时检查
os.getcwd()!我在链接中给出的那个奇怪的解决方案完全把我弄糊涂了。。。非常感谢,现在可以工作了!:-)@Cheshie很乐意帮忙:-)@Cheshie:我不明白。如何