2

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

基本上,类似于

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

脚本的内容与该 some%s 目录中的文件一起使用。

4

2 回答 2

3

subprocess.call有这个cwd关键字参数:

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

(仅隐含地记录了这一点:“完整的函数签名与构造函数的签名相同Popen- 此函数将所有提供的参数直接传递到该接口。”cwd列于Popen。)

于 2013-06-28T14:26:08.630 回答
0

是的,

就在您的循环以编程方式保存当前工作目录并在 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)
于 2013-06-28T14:20:11.967 回答