popen执行错误



这是我的代码的外观,我在使用popen

时会遇到错误

test.py

import subprocess
import sys
def test(jobname):
    print jobname
    p=subprocess.Popen([sys.executable,jobname,parm1='test',parm2='test1'])

if __name__ == "__main__":
   test(r'C:Python27test1.py')

test1.py

def test1(parm1,parm2):
  print 'test1',parm1
if __name__ = '__main__':
  test1(parm1='',parm2='')

错误

语法错误

in test1.py:

您需要两个相等的标志:

if __name__ = '__main__':

使用

if __name__ == '__main__':

由于您想将__name__的值与字符串'__main__'进行比较,而不是为__name__分配值。


在test.py中:

parm1='test'是语法。您不能将值分配给列表中间的变量:

p=subprocess.Popen([sys.executable,jobname,parm1='test',parm2='test1'])

看来,您想将parm1parm2的不同值馈送到函数test1.test1中。您无法通过调用python test1.py来做到这一点,因为那里的parm1=''parm2=''在那里进行了硬编码。

当您想从Python运行非Python脚本时,请使用subprocess。但是,当您想在子过程中运行Python功能时,请使用多处理:

import multiprocessing as mp
import test1
def test(function, *args, **kwargs):
    print(function.__name__)
    proc = mp.Process(target = function, args = args, kwargs = kwargs)
    proc.start()
    proc.join()  # wait for proc to end
if __name__ == '__main__':
    test(test1.test1, parm1 = 'test', parm2 = 'test1')

最新更新