Python CSV导出4000行limi

2024-09-27 00:14:28 发布

您现在位置:Python中文网/ 问答频道 /正文

按照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)
    
  • 是否有任何方法可以解决所有行都可以导出到文件中而不考虑记录/行数的问题?在

    • 我甚至考虑将每一组4000条记录放入自己的文件的逻辑是,文件名的最后一部分可以用一个计数号自动迭代,例如<filename1><filename2><filename2>,依此类推,每个记录不超过4000条。在
  • 理想情况下,我希望继续使用Python,即使使用与此不同的方法将所有数据放入一个文件中,并进行相应的CSV解析。在

完整的Python逻辑(虽然有点改变)

我需要能够将所有记录导出到一个平面文件,而不仅仅是前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']])

环境规范

  • Windows Server 2008 Enterprise x64(很遗憾)
    • 144 GB内存
    • enter image description here
  • Python 3.5.2(v3.5.2:4def2a2901a5,2016年6月25日,22:18:55)[MSC v.1900 64位(AMD64)]

Tags: 文件csv数据方法injsonastag
2条回答

我不确定,因为我不知道你的数据是什么样的,但是csv的字段大小有一个限制,你可以更改。在python 2.7中,默认值为:

import csv
print csv.field_size_limit()

输出:131072

这似乎是Python2.7的最大值。也许通过使用newline = ''您无意中连接了行,从而创建了一个大字段。在

没有Python CSV导出4000行限制

我的问题是@胡安帕.阿里维拉加建议;我得到的数据文件在4000个记录级别被截断,因此Python可以根据它所拥有的数据将JSON数据解析为CSV。在

我与供应商支持人员确认,我们通过带参数的URL-API调用从中调用JSON文件的设备出于某种原因在4000条记录处中断。在

因此,我做出了一个错误且未经验证的假设,即我拥有在URL调用中传递给设备的日期和时间帧参数的所有数据,因为支持文档提到了这个限制。事实上,我被告知这种方法没有限制,直到我给他们发送了支持他们尝试的网址,然后他们证实了他们自己正是我看到的。在

建议修复

在我的例子中,建议的修复方法是调用一个不同的URL,但是这个URL进行了同步,并且不允许基于日期和时间戳调用数据。在

应用修复

我构建了一些逻辑,根据每天从00:00:00 - 00:59:5901:00:00 - 01:59:59运行的每个1小时周期,为任何给定日期调用一个24小时的时间段,一直到{}以一小时为增量进行相应的迭代。似乎一小时内的数据永远不会超过4000条记录的限制,所以在我的例子中,这种解决方案是解决设备/服务器服务记录限制的一种解决办法,它提供被调用的记录。在

相关问题 更多 >

    热门问题