0

これは私のコードがどのように見えるかであり、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='')

エラー

構文エラー

4

1 に答える 1

4

test1.pyの場合:

2つの等号が必要です:

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関数を実行する場合は、マルチプロセッシングを使用します。

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 に答える