我正在尝试使用struct.pack,以便将字符串写入文件。当我这样做时,我会得到以下错误:
File "----", line 166, in main
struct.pack('>256s', *master_header)
struct.error: pack expected 1 items for packing (got 256)
现在,从这里阅读,我似乎用对了。我指定我的字符串中有256个字节/字符。
我使用的是3.3.3版本。
文档中写道:
对于's'格式字符,计数被解释为字符串,而不是像其他格式字符那样的重复计数;例如,"10s"表示单个10字节的字符串,而"10c"表示10字符。
因此,>256s
需要一个256字节长的字符串。如果master_header
已经是这样一个字符串,只需将其传递给struct.pack
而不传递*
。
在调用站点使用*
会导致字符串本身被解压缩为其组成字符,字符串是可迭代的。因此,struct.pack
接收其256个单独的字符作为自变量,从而导致观察到的错误。