如何在Python中运行bash脚本,但模拟从另一个目录运行?

5 投票
4 回答
13288 浏览
提问于 2025-04-16 10:49
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')

撰写回答