Python-每第n行写入一个新文件
我有一长串订户。现在,我正在将它们全部写入一个csv文件。我想把它们分开,这样每第1000行我就创建一个新文件并开始写入,依此类推直到完成 当前代码:Python-每第n行写入一个新文件,python,Python,我有一长串订户。现在,我正在将它们全部写入一个csv文件。我想把它们分开,这样每第1000行我就创建一个新文件并开始写入,依此类推直到完成 当前代码: with open(path, mode='w', newline='') as filename: writer = csv.writer( filename, delimiter=';', quotechar='"', quotin
with open(path, mode='w', newline='') as filename:
writer = csv.writer(
filename,
delimiter=';',
quotechar='"',
quoting=csv.QUOTE_MINIMAL
)
writer.writerow(['email', 'name'])
for subscriber in subscribers:
writer.writerow([subscriber['Email'], subscriber['Name']])
如何扩展此功能以获得所需的功能?您可以将订户列表分块:
def chunks(l, n):
"""Yield successive n-sized chunks from l."""
for i in xrange(0, len(l), n):
yield l[i:i + n]
for subscribers_thousand in chunks(subscribers, 1000):
# Remember to change path for each 1000 subscribers chunk
with open(path, mode='w', newline='') as filename:
writer = csv.writer(
filename,
delimiter=';',
quotechar='"',
quoting=csv.QUOTE_MINIMAL
)
for subscriber in subscribers_thousand:
writer.writerow([subscriber['Email'], subscriber['Name']])
请记住在每次迭代中更改文件名,以免覆盖文件
注意:我从中获得了这个chunk方法。它就像一个符咒制作简单的计数器。如果计数器>1000:则创建新文件并重置。看起来非常方便和优雅!