0

次の方法で関数を呼び出そうとしています。

for TestCase in sys.argv[1:]:
    TestTree = ET.parse(TestCase)
    Root = TestTree.getroot()
    inputFile = Root[0].text
    start_server(inputFile)

def start_server (inputFile):
     server_process = Process(target=HTTPServer.initServer, args=(inputFile))
     server_process.start()

def initServer(self,inputFile):
    print(inputFile)

ただし、これらの行を実行すると、次のエラーで TraceBack が表示されます。

TypeError: initServer() takes 2 positional arguments but 182 were given

ここで、inputFile は単純な HTML Web ページです。どこで間違って182個の引数を送信していますか?

4

1 に答える 1

3

ドキュメントによると:

argsターゲット呼び出しの引数タプルです

したがって、それはタプルでなければなりません。あなたが提供した(inputFile)- simple と同等inputFile。これは反復可能な実際のファイルです。Process実装はおそらく実行してtarget(*args)おり、ファイルをその行に解凍します。

args=(inputFile, )単一のオブジェクトを含むタプルである を渡す必要があります。そう*argsなりますinputFile、さすがです。

于 2013-06-06T04:46:40.830 に答える