如何在Python中运行bash脚本,但模拟从另一个目录运行?
subprocess.call(["/home/blah/trunk/blah/run.sh", "/tmp/ad_xml", "/tmp/video_xml"])
我这样做了。不过,在我的 run.sh 文件里,我使用的是“相对”路径。也就是说,我需要先进入那个目录,然后再运行这个脚本。我该怎么做呢?
4 个回答
1
你可以使用 subprocess.Popen,把 Shell 设置为 True,并且指定 cwd = "你想要的工作目录"
编辑:看起来 call 也有相同的参数,所以只要设置一个 cwd 参数就可以了:
subprocess.call(["/home/blah/trunk/blah/run.sh", "/tmp/ad_xml", "/tmp/video_xml"], cwd="PATH")
1
你可以这样指定你的工作目录:
subprocess.call(["/home/blah/trunk/blah/run.sh", "/tmp/ad_xml", "/tmp/video_xml"], cwd="/home/blah/trunk/blah")
12
使用 subprocess.call()
的 cwd
参数
来自这里的文档: http://docs.python.org/library/subprocess.html
如果
cwd
不是 None,子进程的当前目录会在执行之前被更改为cwd
。需要注意的是,这个目录在查找可执行文件时并不被考虑,所以你不能根据cwd
来指定程序的路径。
示例:
subprocess.call(["/home/blah/trunk/blah/run.sh", "/tmp/ad_xml", "/tmp/video_xml"], cwd='/tmp')