我只需要一次使用X行的帮助。
我有一个任务来解析一个10000行的csv文件->;将其转换为字典->;然后一次处理100行进行API调用。在本例中,让我们只输出到print函数。我将需要执行每100或更少的一些嵌套字典将不完全工作到100每个,所以代码将需要为此灵活。我使用的是python2.7,没有漂亮的sup等额外模块。我得到了api\u workerfor循环代码块来帮助我完成这项任务,但不知道如何让它工作。我应该把打印放在哪里(稍后用api代码替换)?到目前为止我试过的所有东西都会打印出所有的,什么都没有,或者每个单独的字符串
我会删掉很多不需要的代码:
import * # assume i have all the right modules
def parseCSV(filename):
# this i have working
return result
def api_worker(readerObj):
for majorkey in readerObj.keys():
listof100 = []
for idx, line in enumerate(readerObj.get(majorkey)):
if (idx+1 % 100) != 0:
listof100.append(line)
else:
print listof100 #tried here makes no difference
del listof100[:]
listof100.append(line)
print listof100 #tried here but outputs all
def main():
readerObj = parseCSV('somefile.csv')
api_worker(readerObj)
if __name__ == '__main__':
main()
示例来源:
{'majorkey1': [{'name':'j','age':'3','height':'6feet'},
{'name':'r','age':'4','height':'5feet'},
{'name':'o','age':'5','height':'3feet'}],
'majorkey2':[{'name':'n','age':'6','height':'4feet'},
{'name':'s','age':'7','height':'7feet'},
{'name':'q','age':'7','height':'8feet'}]}
所需输出:
如果使用这个小样本,并且我想一次打印两行,那么打印所需的输出将是:
来自主要工作组
{'name':'j','age':'3','height':'6feet'}{'name':'r','age':'4','height':'5feet'}
睡眠1秒
{'name':'o','age':'5','height':'3feet'}
来自majorkey2集团
睡眠1秒
{'name':'n','age':'6','height':'4feet'}{'name':'s','age':'7','height':'7feet'}
睡眠1秒
{'name':'q','age':'7','height':'8feet'}
非常感谢你的帮助
听起来你需要把一个列表分解成固定长度的块,而不把整个列表加载到内存中?这可以通过使用
itertools
模块的一些帮助来实现。这取自Python docs:一种可能性:
(顺便说一句,如果你真的想要上面给出的格式,你可以用
print ''.join(map(repr, rows))
替换列表print
,当然你可以在任何你想要的地方插入一个sleep。)相关问题 更多 >
编程相关推荐