python 按行写入pickle 文件_如何将python对象pickle到csv文件中?

要在CSV之类的文本文件中写入字节/二进制,请使用base64或其他方法来避免任何转义问题。代码简化&python3假定。import base64

with open('a.csv', 'a', encoding='utf8') as csv_file:

wr = csv.writer(csv_file, delimiter='|')

pickle_bytes = pickle.dumps(obj) # unsafe to write

b64_bytes = base64.b64encode(pickle_bytes) # safe to write but still bytes

b64_str = b64_bytes.decode('utf8') # safe and in utf8

wr.writerow(['col1', 'col2', b64_str])

# the file contains

# col1|col2|gANdcQAu

with open('a.csv', 'r') as csv_file:

for line in csv_file:

line = line.strip('\n')

b64_str = line.split('|')[2] # take the pickled obj

obj = pickle.loads(base64.b64decode(b64_str)) # retrieve

另外,如果你没有写utf8文件(例如ascii文件),只需替换编码方法。

p.S.在CSV中写入字节是可能的,但很难做到优雅。另一种方法是转储一个完整的dict,其中转储的对象作为值并将密钥存储在CSV中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值