首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Popen执行错误

Popen执行错误
EN

Stack Overflow用户
提问于 2012-10-23 05:24:49
回答 1查看 114关注 0票数 0

这就是我的代码的样子,当我使用Popen时,我得到了一个错误

test.py

代码语言:javascript
复制
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')

test1.py

代码语言:javascript
复制
def test1(parm1,parm2):
  print 'test1',parm1

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

错误

语法错误

EN

回答 1

Stack Overflow用户

发布于 2012-10-23 05:26:39

Test1.py中的

中需要两个等号:

代码语言:javascript
复制
if __name__ = '__main__':

改为使用

代码语言:javascript
复制
if __name__ == '__main__':

由于您希望将__name__的值与字符串'__main__'进行比较,因此不要为__name__赋值。

Test.py中的

parm1='test'是一个SyntaxError。您不能为列表中间的变量赋值:

代码语言:javascript
复制
p=subprocess.Popen([sys.executable,jobname,parm1='test',parm2='test1'])

您似乎想要将parm1parm2的不同值提供给函数test1.test1。您不能通过调用python test1.py来做到这一点,因为parm1=''parm2=''在那里是硬编码的。

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

代码语言:javascript
复制
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')
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13020131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档