0

这就是我的代码的外观,并且在使用 Popen 时出现错误

测试.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:\Python27\test1.py')

测试1.py

def test1(parm1,parm2):
  print 'test1',parm1

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

错误

语法错误

4

1 回答 1

4

在 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'])

看来您想为函数提供不同parm1的值。你不能通过调用来做到这一点,因为那里是硬编码的。parm2test1.test1python test1.pyparm1=''parm2=''

如果要从 Python 运行非 Python 脚本,请使用subprocess. 但是当您想在子进程中运行 Python 函数时,请使用multiprocessing

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')
于 2012-10-22T21:26:39.297 回答