2017-09-04 72 views
0

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

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

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

回答

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,你不需要在这里)

+0

我找到'os.chdir()'方法作为解决办法,但你作为方法参数的路径是更好的。 Ty求助。 –

+1

是的,应该避免使用'os.chdir()',因为它会改变当前进程的当前目录(还有其他线程,如果有的话) –

相关问题