【发布时间】:2021-03-22 11:17:02
【问题描述】:
有什么方法可以在添加新行时从 csv 文件中删除最后一行? (无需创建单独/重复的 csv 文件).
我的目标是防止正在运行的 csv 文件超过行数和大小。
理想情况下:
- 无需创建其他文件
- 首选 csv.DictWriter/Reader ,但 csv.reader 或 csv.writer 都可以。
我得到的错误是:
DictWriter 不可迭代。
而且 DictReader 不会写入 csv。
【问题讨论】:
-
基本上你打开文件进行读写并创建一个“DictReader”和“DictWriter”来包装同一个打开的文件。然后你读到你想保留的最后一行,然后写下新的一行。最后,您应该“截断”文件以删除可能的旧数据。
-
谢谢!我不知道您可以同时使用 DictReader 打开一个文件,然后还有 DictWriter(在 Reader 循环内) - 在网络上的任何地方都找不到这样的示例。唯一的选择是创建第二个文件 - 听起来效率低下....仍在阅读 truncate 的作用 - 如果我正确地执行您的第一个建议,似乎没有必要。
-
如果旧行比新行长,旧行的最后一个字符将保留,因此“截断”。如果您确定新行永远不会更短,您可以省略它。