我希望在python脚本的子目录中运行bash脚本。此bash脚本应执行其所有操作,就像它在当前目录中一样。除了将目录作为参数传递并使用它来指导所有调用之外,有没有办法做到这一点?
基本上,
的内容for i in range(1,100):
subprocess.call(['/some%s/task.sh' % i, arg1])
其中脚本的内容使用某些%s目录中的文件。
答案 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)