【发布时间】:2016-11-14 23:23:15
【问题描述】:
我正在编写一个小脚本,它遍历 .csv,将文件中的每一行存储为字典,并将该字典触发到一维列表中的 API。
import csv
import requests
with open('csv.csv', 'rU') as f:
reader = csv.reader(f, skipinitialspace=True)
header = next(reader)
for row in reader:
request = [dict(zip(header, map(str, row)))]
r = requests.post(url, headers = i_headers, json = request)
print str(reader.line_num) + "-" + str(r)
request 列表如下所示:
[
{
"id": "1",
"col_1": "A",
"col_2": "B",
"col_3": "C"
}
]
这个脚本有效,但我正在循环一个 800 万行的 .csv,而且这个方法太慢了。我想通过每次 API 调用发送多于一行来加快这个过程。我正在使用的 API 允许我每次调用最多发送 100 行。
如何更改此脚本以增量构建包含 100 个词典的列表,将其发布到 API,然后重复。我将发送到此 API 的示例如下所示:
[
{
"id": "1",
"col_1": "A",
"col_2": "B",
"col_3": "C"
},
{
"id": "2",
"col_1": "A",
"col_2": "B",
"col_3": "C"
},
...
...
...
{
"id": "100",
"col_1": "A",
"col_2": "B",
"col_3": "C"
}
]
一个行不通的方法是构建一个庞大的列表,然后将其划分为 n 个大小为 100 的列表。原因是我的机器无法在任何给定时间将所有这些数据保存在内存中。
【问题讨论】:
-
对列表进行分区
标签: python list csv dictionary