【发布时间】:2018-01-26 06:58:00
【问题描述】:
我正在尝试将 python 对象腌制到 csv 文件中。我想将对象的泡菜写为文件中的第三列。我想使用 pickle 来避免为我的复杂对象编写序列化。
写入 csv 的代码:
with open(self.file_path, 'a') as csv_file:
wr = csv.writer(csv_file, delimiter='|')
row = ['klines', symbol]
row.extend(pickle.dumps(object))
wr.writerow(row)
读取 csv 的代码:
with open(self.simulation_file_name, 'r') as csv_file:
line = csv_file.readline()
while line != '':
line = line.strip('\n')
columns = line.split('|')
event_type = line.pop(0)
symbol = line.pop(0)
pickled = line.pop(0)
klines = pickle.loads(klines)
我收到以下错误:
TypeError: a bytes-like object is required, not 'str'
【问题讨论】:
-
在 csv 文件中存储的不是腌制的 Python 对象本身而是保存在磁盘某处的指向它的链接不是更好吗?
-
CSV 文件被设计成人类可读的,但 Pickle 不是。
-
pickle.dumps给出了一个bytes对象。带有bytes对象的list.extend使用int 扩展列表,从而产生['klines', symbol, 128, 3, 93...](在Python3 中测试)。这是你想要的吗?或者你的意思是row.append -
一个完整的回溯会很好
-
你能告诉我为什么你想这样做没有 x/y 问题吗?
标签: python csv pickle python-3.6