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