我试图以下列方式调用函数:
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个参数?
答案 0 :(得分:3)
根据the docs:
args
是目标调用的参数元组
所以它必须是一个元组。您提供了(inputFile)
- 相当于简单inputFile
。这是实际文件,可以迭代。 Process
实现可能正在执行target(*args)
,它会将文件解包到其行中。
您应该传递args=(inputFile, )
,这是一个包含单个对象的元组。所以*args
变为inputFile
,正如所料。