这就是我的代码的样子,当我使用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:\Python27\test1.py')test1.py
def test1(parm1,parm2):
print 'test1',parm1
if __name__ = '__main__':
test1(parm1='',parm2='')错误
语法错误
发布于 2012-10-23 05:26:39
Test1.py中的:
中需要两个等号:
if __name__ = '__main__':改为使用
if __name__ == '__main__':由于您希望将__name__的值与字符串'__main__'进行比较,因此不要为__name__赋值。
Test.py中的:
parm1='test'是一个SyntaxError。您不能为列表中间的变量赋值:
p=subprocess.Popen([sys.executable,jobname,parm1='test',parm2='test1'])您似乎想要将parm1和parm2的不同值提供给函数test1.test1。您不能通过调用python test1.py来做到这一点,因为parm1=''和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')https://stackoverflow.com/questions/13020131
复制相似问题