如何使用来自另一个传递的子进程运行python脚本

时间:2017-09-04 13:54:44

标签: python subprocess

我需要运行另一个python脚本,它在我当前使用的脚本中生成数据。我使用subprocess来运行它:

cmd = 'python /home/usr/script.py arg1 arg2 arg3'
subprocess.Popen(cmd, shell=True)

但是有问题。以前的脚本在'当前目录'中生成了几个目录,这意味着它在目录中运行。我无法修改以前的脚本,因为它不是我的脚本。如何将当前目录设置为我想要获取数据的目录? \n
另一个小问题是,当我运行subprocess.Popen()时,我的脚本不会结束。我应该以另一种方式运行吗?

1 个答案:

答案 0 :(得分:1)

最好的方法是使用subprocess.call代替(等待和终止,Popen,而无需相关wait()创建僵尸进程)并使用cwd=参数为子进程指定当前目录:

cmd = ['python','/home/usr/script.py','arg1','arg2','arg3']
return_code = subprocess.call(cmd, cwd="/some/dir")

(也将命令作为列表传递,然后删除shell=True,此处不需要它)