如何使用来自其他交付的子流程运行python脚本

如何使用来自其他交付的子流程运行python脚本,python,subprocess,Python,Subprocess,我需要运行另一个python脚本,该脚本在我当前使用的脚本中生成数据。我使用子流程运行它: cmd = 'python /home/usr/script.py arg1 arg2 arg3' subprocess.Popen(cmd, shell=True) 但是我有个问题。以前的脚本在“当前目录”中生成了几个目录,这意味着它运行在的目录中。我不能修改以前的脚本,因为它不是我的。如何将当前目录设置为要获取数据的目录\n 另一个小问题是,当我运行subprocess.Popen()时,我的脚本没

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

cmd = 'python /home/usr/script.py arg1 arg2 arg3'
subprocess.Popen(cmd, shell=True)
但是我有个问题。以前的脚本在“当前目录”中生成了几个目录,这意味着它运行在的目录中。我不能修改以前的脚本,因为它不是我的。如何将当前目录设置为要获取数据的目录<代码>\n


另一个小问题是,当我运行
subprocess.Popen()
时,我的脚本没有结束。我应该以另一种方式运行它吗?

最好的方法是使用
子进程。改为调用
(等待和终止,
Popen
,而不使用相关的
wait()
可能会创建一个僵尸进程),并使用
cwd=
参数指定子进程的当前目录:

cmd = ['python','/home/usr/script.py','arg1','arg2','arg3']
return_code = subprocess.call(cmd, cwd="/some/dir")
(也可以将命令作为列表传递,并删除
shell=True
,此处不需要它)

我找到了
os.chdir()
方法作为解决方案,但您的path as method参数更好。是的,应该避免使用
os.chdir()
,因为它会更改当前进程的当前目录(以及其他线程,如果有的话)