Python每4.5MB分割每个JSON文件

时间:2018-12-19 13:57:59

标签: python json csv split qualtrics

我是python的新手。我有大约21个JSON文件与POST请求一起发送。不幸的是,我正在尝试发送这些文件(Qualtrics)的服务仅接受最大5MB的文件。话虽如此,我需要每4.5 MB拆分这些JSON文件(请确保)。该python脚本是数据流的一部分,因此,如果失败,则将不执行后续步骤。

所以,我现在所拥有的以及我的脚本要做的是:

  • 从CSV转换为JSON
    • JSON格式为[{“ key1”:“ value”,“ key2”:“ value”,...},{...}]
  • 使用该JSON发送POST请求。
    • 如果文件大小> 5MB,脚本将失败。

我已经尝试寻找解决方案,但是我并不幸运。 我已经能够拆分CSV,但是由于2MB CSV变成了5.5MB JSON,所以我不能完全确定。

你们有什么建议吗?阻止我的另一件事是,由于我正在使用非我的linux服务器工作,因此我没有被授予安装其他库的许可,即使我要求我也没有得到回应... < / p>

非常感谢您。

1 个答案:

答案 0 :(得分:0)

假设您的JSON是这样的对象数组:

[
   {"key1: "value1", "key2: "value2", ....},
   ...
   {"key1: "value1", "key2: "value2", ....}
]

然后您可以像这样手动构建有效负载:

def send_entries(entries):
   payload = '[' + ','.join(entries) + ']'
   send_entries(payload)

json_entries = []
total_size = 0

for line in csv:
    json_entry = converto_to_json(line)
    json_entries.append(json_entry)
    total_size += len(json_entry)
    if total_size >= 4_500_000:
        send_entries(json_entries)
        total_size = 0
        json_entries = []

if json_entries:
    send_entries(json_entries)

有效负载的实际大小可能比4.5Mb大一点,但是只要CSV中的每个条目小于500Kb,您就可以了。