python - 将简单类序列化为文件中的一行
问题描述
我有一个非常简单的 Python 类,称为 Post,它只有 3 个字符串字段:作者、时间戳和内容。
我想将一堆这些对象序列化到一个文件中,所以我尝试了 Pickle,但每个文件使用 3 行,我只想遍历文件的每一行并将 1 行转换为 1 个 Post 对象。
将这些序列化为一行的简单方法是什么?
解决方案
存储对象的一种方法是 CSV 文件的行。CSV 文件的每一行都包含三个逗号分隔的作者、时间戳和内容值。看一下 csv 库:
https://docs.python.org/3/library/csv.html#csv.writer
你最终可能会做这样的事情(未经测试):
posts = [ Your Posts array ]
with open('posts.csv', 'w', newline='') as csvfile:
fieldnames = ['author', 'timestamp', 'content']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for p in posts:
writer.writerow({'author': p.author, 'timestamp': p.timestamp, 'content' : p.content})
推荐阅读
- java - 在 AWS EMR 中运行时,StreamingFileSink 批量写入器会导致一些检查点错误
- python - 使用来自另一列的条件值向 Pandas 数据框添加新列
- javascript - 提取共享相同值的子数组
- javascript - 获取数据时显示加载页面 - React Redux
- php - 在动态链接库中找不到过程入口点_zend_hash_index_update@@24
- qt - 我如何在 qpushbutton 中自动换行
- asynchronous - rust-tokio 流中的缓冲区有没有办法使用 &[u8] 以外的东西?
- c# - CS0029 无法隐式转换类型 'System.Collections.Generic.List
' 到 'Models.JobModel' - python - Pyspark 中的中位数和分位数
- php - PHP exec() 命令在代码中完美运行,但在被 AJAX 调用时却不行