如何使用另一个交付的子进程运行python脚本
问题描述:
我需要运行另一个python脚本,它在我当前使用的脚本中生成数据。我用subprocess
来运行它:如何使用另一个交付的子进程运行python脚本
cmd = 'python /home/usr/script.py arg1 arg2 arg3'
subprocess.Popen(cmd, shell=True)
但是有问题。上一个脚本在'当前目录'中生成很少的目录,这意味着它在运行的目录中。而且我不能修改以前的脚本,因为它不是我的。如何将当前目录设置为我想要获取数据的目录? \n
另一个小问题是当我运行subprocess.Popen()
时,我的脚本没有结束。我应该用另一种方式运行吗?
答
最好的方法是使用subprocess.call
代替(等待&终止,Popen
未经有关部门wait()
可以创建一个僵尸进程),并使用cwd=
参数指定当前目录为子:
cmd = ['python','/home/usr/script.py','arg1','arg2','arg3']
return_code = subprocess.call(cmd, cwd="/some/dir")
(也传递命令的列表,拖放shell=True
,你不需要在这里)
我找到'os.chdir()'方法作为解决办法,但你作为方法参数的路径是更好的。 Ty求助。 –
是的,应该避免使用'os.chdir()',因为它会改变当前进程的当前目录(还有其他线程,如果有的话) –