如何在Python中运行bash脚本,但就好像它从另一个目录运行?

时间:2011-01-29 02:47:22

标签: python linux bash shell unix

subprocess.call(["/home/blah/trunk/blah/run.sh", "/tmp/ad_xml", "/tmp/video_xml"])

我这样做。但是,在我的run.sh中,我有“相对”路径。 所以,我必须“cd”到该目录,然后运行shell脚本。我该怎么做?

4 个答案:

答案 0 :(得分:12)

使用cwd

subprocess.call()参数

来自此处的文档:http://docs.python.org/library/subprocess.html

  

如果cwd不是无,则为孩子的   当前目录将更改为   cwd在执行之前。注意   此目录不在考虑时   搜索可执行文件,所以你不能   指定程序相对于的路径   cwd

示例:

subprocess.call(["/home/blah/trunk/blah/run.sh", "/tmp/ad_xml", "/tmp/video_xml"], cwd='/tmp')

答案 1 :(得分:1)

好吧,你可以使用subprocess.Popen与Shell = True和cwd =“你想要的工作目录”

编辑:看来调用具有相同的参数,所以只设置一个cwd参数就可以了:

subprocess.call(["/home/blah/trunk/blah/run.sh", "/tmp/ad_xml", "/tmp/video_xml"], cwd="PATH")

答案 2 :(得分:1)

您可以提供如下工作目录:

  

subprocess.call([“/ home / blah / trunk / blah / run.sh”,“/ tmp / ad_xml”,“/ tmp / video_xml”],cwd =“/ home / blah / trunk / blah” )

答案 3 :(得分:0)