根据this question我发布了一段时间后,我正在解析JSON格式的数据,并根据需要将其提取为CSV文件。
我现在注意到,使用更大的JSON提取数据进入的CSV文件只是在第4000行之后停止创建记录, 但是JSON原始数据文件肯定有更多的行它应该提取超过4000 。 。 。这就是我的想法和错误。我最后在下面的问题中添加了一个答案,其中适用于我的情况,供应商建议修复,以及解决问题的实际应用修复。
使用下面列出的Python方法是否有4000行导出限制或行读取限制?
with open(RawDataFile,"r") as file: data = json.load(file) with open(CsvFile,"w",newline='') as file: csv_file = csv.writer(file)
有没有办法解决问题,无论记录/行数是多少,都可以将所有行导出到文件中?
<filename1>
,<filename2>
,<filename2>
等,每条记录不超过4000条。我需要能够将所有记录导出到平面文件而不仅仅是前4000个。使用下面的格式可以确切地了解所需的格式。
import json
import csv
import sys
RawDataFile = sys.argv[1]
CsvFile = sys.argv[2]
with open(RawDataFile,"r") as file:
data = json.load(file)
with open(CsvFile,"w",newline='') as file:
csv_file = csv.writer(file)
for dev in data["devs"]:
for tag in dev["tags"]:
if "history" in tag:
for hist in tag["history"]:
csv_file.writerow([tag['TagId'], hist['date'].replace('T',' ').replace('Z',''), hist['value']])
答案 0 :(得分:1)
我不确定,因为我不知道您的数据是什么样的,但是您可以更改csv的字段大小限制。在python 2.7中,默认值为:
import csv
print csv.field_size_limit()
输出:131072
这似乎是python 2.7的最大值。也许通过使用newline = ''
,你无意中连接了行,从而创建了一个大字段。
答案 1 :(得分:0)
没有Python CSV导出4000行限制
我的问题就像@ juanpa.arrivillaga建议的那样;我得到的数据文件仅在4000记录级别被截止,因此Python根据它拥有的数据将JSON数据解析为CSV。
我向供应商支持证实,我们通过带有参数等的URL API调用来调用JSON文件的设备由于某种原因切断了4000条记录。
因此,我做了一个糟糕且未经证实的假设,即我将所有来自日期和时间帧参数的数据传递到URL调用设备中,因为支持文档提到了限制。事实上,有人告诉我这个方法没有限制,直到我发送了URL来支持他们尝试,然后他们确切地确认了我看到的内容。
建议修复
我的建议修复是调用不同的URL,但该URL执行了同步,并且不允许根据日期和时间戳调用数据。
已修复
我构建了一些逻辑,根据每天从00:00:00 - 00:59:59
,01:00:00 - 01:59:59
开始运行的每个小时,为任何给定日期拨打24小时的电话。通过23:00:00 - 23:59:59
的方式相应地以一小时为增量进行迭代。似乎一小时时间范围内的数据永远不会超过4000记录限制,所以在我的情况下,这种解决方案是对提供被调用记录的设备/服务器服务的记录限制的解决方法。