我想写一个字符串列表到二进制文件。假设我有一个字符串列表mylist
?假设列表中的项目最后有一个'\t'
,除了最后一个项目最后有一个'\n'
(帮助我恢复数据)。示例:['test\t', 'test1\t', 'test2\t', 'testl\n']
对于numpy ndarray
,我发现以下脚本有效(从numpy to r converter获取):
binfile = open('myfile.bin','wb')
for i in range(mynpdata.shape[1]):
binfile.write(struct.pack('%id' % mynpdata.shape[0], *mynpdata[:,i]))
binfile.close()
如果变量前面有binfile.write
,*
会自动解析所有数据吗(例如上面的*mynpdata[:,i]
示例中)?这是否会以相同的方式使用整数列表(例如*myIntList
)?
如何使用字符串列表执行相同的操作?
我在一个字符串上尝试使用(我在网上找到的地方):
oneString = 'test'
oneStringByte = bytes(oneString,'utf-8')
struct.pack('I%ds' % (len(oneString),), len(oneString), oneString)
但我无法理解为什么上面的%
'I%ds'
取代(len(oneString),)
而非len(oneString)
取代ndarray
示例,为什么len(oneString)
和oneString
都通过了?
有人可以帮我写一个字符串列表(如果需要,假设它被写入我写出ndarray
的同一个二进制文件中)?
答案 0 :(得分:1)
不需要struct
。只需连接字符串并使用指定或假定的文本编码对它们进行编码,以便将它们转换为字节。
''.join(L).encode('utf-8')