1

谁能解释 Python 中的 Popen 和 exec 有什么区别

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

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

代码1.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')

代码2.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
4

1 回答 1

4

exec并且Popen或多或少无关。


exec用于运行一段python代码。

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


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

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

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

于 2012-10-26T13:02:42.027 回答