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 网页。我在哪里出错并发送 182 个参数?

4

1 回答 1

3

根据文档

args是目标调用的参数元组

所以它必须是一个元组。您提供了(inputFile)- 相当于 simple inputFile。这是实际的文件,它是可迭代的。Process实现可能正在做target(*args),它将文件解包到它的行。

您应该通过args=(inputFile, ),这是一个包含单个对象的元组。所以*args变成inputFile,正如预期的那样。

于 2013-06-06T04:46:40.830 回答