popen和exec python之间的区别

时间:2012-10-26 12:45:53

标签: python

任何人都可以解释Popen和exec在Python中的区别

我能够完成相同的任务,使用exec和Popen动态执行程序。

此处的代码使用EXEC方法,但如果我使用Popen方法将会发生什么。

code1.py

def runjob(src, job):
    x = "from {src} import *" +  '\n' + "{job}(parm1=)"
    y = x.format(src=src, job=job)
    exec ( 'from ' + src + ' import *' + '\n' + job  + '(10)' )


def main():
    runjob(c:/python27/test_job', 'il')

code2.py

def fl(parm=None):
    print 'function1'
    print parm

def f2(parm=None):
    print 'function 2'
    print parm

def f3(parm=None):
    print 'function 3'
    print parm

1 个答案:

答案 0 :(得分:4)

execPopen或多或少无关。


exec用于运行一段python代码。

  

此语句支持Python代码的动态执行。第一个表达式应该计算为字符串,打开文件对象或代码对象。如果它是一个字符串,则将该字符串解析为一组Python语句,然后执行该语句(除非发生语法错误)。如果它是一个打开的文件,则解析该文件直到EOF并执行。


Popen是一个允许您运行任何程序的类。

  

在新流程中执行子程序。它提供了很大的灵活性,因此开发人员能够处理便利功能未涵盖的不太常见的情况。

您不仅可以运行其他程序,还可以读取其输出并设置许多有用的选项,例如工作目录或是否应该打开新终端等。