用python存储超大文件的合适选择是什么。csv文件截断了某些单元格中的数据

用python存储超大文件的合适选择是什么。csv文件截断了某些单元格中的数据,python,python-3.x,csv,large-files,Python,Python 3.x,Csv,Large Files,我正在为项目的数据采集阶段编写一个python脚本,到目前为止,我一直在将数据存储在.csv文件中。当我从一个特定的.csv文件中读取数据时,我得到了一个错误: syntaxError:扫描字符串文字时下线 我查看了文件中的特定行,特定单元格中的数据被截断。我使用pandas将DICT存储到csv,它从未抛出错误。我想.csv无论如何都会保存自己,即使这意味着它会在没有任何警告的情况下删除数据 我想换成.xls。当存储同一行时,出现了一个错误,提示如下(大致如下所示): 已达到最大字符长度。每个

我正在为项目的数据采集阶段编写一个python脚本,到目前为止,我一直在将数据存储在.csv文件中。当我从一个特定的.csv文件中读取数据时,我得到了一个错误:

syntaxError:扫描字符串文字时下线

我查看了文件中的特定行,特定单元格中的数据被截断。我使用pandas将DICT存储到csv,它从未抛出错误。我想.csv无论如何都会保存自己,即使这意味着它会在没有任何警告的情况下删除数据

我想换成.xls。当存储同一行时,出现了一个错误,提示如下(大致如下所示):

已达到最大字符长度。每个单元的最大字符长度约为32k

然后我想这可能只是excel/libreoffice calc的问题(我两个都试过了),他们无法将数据可视化到单元格中,但它们确实存在。所以我试着打印特定的单元格;数据确实被截断了。特定单元格包含一个dict,其值为float、int、boolean或string。但是,它们都已转换为字符串

我的问题是,有没有办法在不改变文件格式的情况下修复它

如果我必须更改文件格式,那么存储非常大的文件的合适选择是什么?我在考虑hdf5

如果你需要更多的信息,一定要告诉我。谢谢大家!

有:

在我的系统(Python 3.8.0)上,我得到:

正好是128KB

您可以尝试将限制设置得更高:

 csv.field_size_limit(your_new_limit)

但是,根据您存储的数据类型,可能更适合使用不同的文件格式。

如果您存储dict,我肯定会选择一种实际支持dict的文件格式,而不会让您将其转换为字符串,例如JSON或msgpack。HDF5对于大型表或数字和字符串数组来说是一个相当好的选择,但听起来这并不是数据的实际外观……另一个选择是将所有内容存储在sql数据库中。大多数数据库可以轻松处理数百万条条目。使用pandas和sql数据库的一些示例包括和。字段大小限制可以增加,但接收端可能无法接收具有很长字段的CSV文件。如果您的最终目标是Excel,那么它在可接受的范围上比Python要严格得多(但是如果您能够摆脱Excel,那么这个世界对您来说可能会更好)。感谢您指出了正确的方向!我使用了这个链接的解决方案:设置新的限制。尽管libre-office-calc仍然抛出通常的错误消息:“由于超出了每个单元格的最大字符数,无法完全加载数据”,但数据确实存在。dicts列表的长度已根据实际长度进行检查,它们是相同的。
>>> import csv
>>> csv.field_size_limit()
131072
 csv.field_size_limit(your_new_limit)