在脚本当前目录中从Python运行子进程bash脚本

时间:2013-06-28 14:11:26

标签: python shell directory subprocess

我希望在python脚本的子目录中运行bash脚本。此bash脚本应执行其所有操作,就像它在当前目录中一样。除了将目录作为参数传递并使用它来指导所有调用之外,有没有办法做到这一点?

基本上,

的内容
for i in range(1,100):
     subprocess.call(['/some%s/task.sh' % i, arg1])

其中脚本的内容使用某些%s目录中的文件。

2 个答案:

答案 0 :(得分:3)

subprocess.call具有cwd关键字参数:

for i in xrange(1, 100):
    subprocess.call(["./task.sh", arg1], cwd=("/some%d" % i))

(这只是隐式记录:“完整的函数签名与Popen构造函数的签名相同 - 这个函数将所有提供的参数直接传递给该接口。”cwd列在Popen。)

答案 1 :(得分:0)

是的,

在循环之前,以programitically方式保存当前工作目录,并在subprocess.call之前将当前工作目录更改为/ some%s,然后在完成后将其设置回原始值。

import os
Orig = os.path.abspath('.')
for i in range(1,100):
    os.chdir('/some%s' % i)
    subprocess.call(['./task.sh' % i, arg1])
os.chdir(Orig)