从另一个脚本运行python脚本

问题描述:

我希望运行一个python脚本,该脚本从另一个python脚本获取选项和参数。从另一个脚本运行python脚本

For example run C:\\code\\old_start_training_generic_depth.py -i 10 -l 2 from 
C:\\code\\start.py 

C:\代码\ start.py:

import subprocess 
subprocess.Popen(["python", r"C:\code\old_start_training_generic_depth.py", "-i", "10", "-l", "2"]) 
+1

尽管为了应付系统中安装的多个Python版本,通常使用'sys.executable'而不是使用硬编码'“python”''更好。 – ncoghlan 2011-05-16 11:44:08

你可以做,使用subprocess.Popen,可用于从您的Python代码运行任何外部程序(包括其他的Python程序)。

这就是说,我会这样做,否则。由于这两个程序都是用Python编写的,因此我会将要调用的程序打包为可通过编程方式调用(即导入并调用)的模块,而不是将其称为子进程。这可能会带来一些小的开发成本,但最终我相信它会为自己付出代价,因为这种方法有很多优点。

+2

+1给了所需要的答案,以及这是问的人。 – Johnsyweb 2011-05-16 09:49:06

import subprocess 
subprocess.Popen(['C:\\code\\old_start_training_generic_depth.py', '-i', '10', '-l', '2']).wait() 
+0

你不只是'沟通()'并扔掉结果。 – 2011-05-16 09:48:17

# once upon a time somewhere in the start.py 
os.system("python C:\\code\\old_start_training_generic_depth.py -i 10 -l 2") 
+0

不! os.system不是正确的做法。 [os.system](http://docs.python.org/library/os.html#os.system) – 2011-05-16 09:45:16

+0

'os.system'可以很好地工作。我猜@Jakob的意思是'subprocess.Popen'是一个更好的选择。 – Thomas 2011-05-16 09:53:28

+0

如果你不需要传递输入/ catch输出,我没有看到os.system有什么问题。 – Klark 2011-05-16 09:53:33

import subprocess 

def runscript(): 
    ''' 
    Run a script 
    ''' 

    cmd_list = ["python", r"C:\code\old_start_training_generic_depth.py", \ 
       "-i", "10", "-l", "2"] 

    pipe = subprocess.Popen(cmd_list, stdin=subprocess.PIPE, \ 
        stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 

    stdout, stderr = pipe.communicate() 
    retcode = pipe.poll() 

    return (retcode, stdout, stderr)