问题
I am trying to serialize a Python object into JSON using namedtuple. But I get this error. Google does not help.
Traceback (most recent call last):
File "cpu2.py", line 28, in <module>
cpuInfo = collections.namedtuple('cpuStats',('cpu.usr', ('str(currentTime) + " "
+str(cpuStats[0]) + " host="+ thisClient')), ('cpu.nice', ('str(currentTime) + " "
+str(cpuStats[1]) + " host="+ thisClient')), ('cpu.sys',('str(currentTime) + " "
+str(cpuStats[2]) + " host="+ thisClient')), ('cpu.idle',('str(currentTime) + " "
+str(cpuStats[3]) + " host="+ thisClient')))
TypeError: namedtuple() takes at most 4 arguments (5 given)
回答1:
Here is a link to the documentation for namedtuple. You aren't initializing it properly.
How I'm guessing you should initialize it:
cpuInfo = collections.namedtuple('cpuStats', ['usr', 'nice', 'sys', 'idle'])
# In this case, usr=str(currentTime) + " " +str(cpuStats[0]) + " host=" + thisClient
# You can figure the rest out...
info = cpuInfo(usr='fill',
nice='this',
sys='your',
idle='self')
Also, you might want to read this question which talks about serializing namedtuples in json.
来源:https://stackoverflow.com/questions/18707277/namedtuple-error