python - 如何使用python在多个csv文件中写入数据块
问题描述
我有一些巨大的数据,比如一个文件中有 100000 行,我想将这些数据写入 CSV 文件,但我想要一个只能包含 20000 行的 CSV 文件,而其他 20000 行写入另一个 CSV 文件,
在这种方法中,我需要 5 个不同的 CSV,每个包含 20000 行。并且文件的命名应该是。
csv_file1.csv
csv_file2.csv
csv_file3.csv
csv_file4.csv
csv_file5.csv
如果数据是 100001,那么最后一行应该写入另一个 CSV 文件。一个 CSV 文件的数据限制仅为 20000。
我试过这样:
while number_of_line != 20000:
with open(csv_file, 'w') as csvfile:
fieldnames = defile_field
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for row in data:
writer.writerow({"data":row})
解决方案
一种可能的方法是对从原始文件获取数据的 csv 文件使用循环:
with open('orig.csv') as fd:
rd = csv.DictReader(fd)
num = 1
cont = True
while cont:
with open('cvs_file{}.csv'.format(i), 'w', newline='') as fdout:
wr = cvs.DictWriter(fdout, fieldnames=rd.fieldnames)
wr.writeheader()
for i in range(20000): # max rows per file
try:
row = next(rd)
wr.writerow(row)
except StopIteration:
cont = False
break
num += 1
推荐阅读
- python-3.x - 无法将 postgresql 与 odoo 连接
- netsuite - NetSuite 生成数字签名以调用 restlet
- swift - CoreData:不调用 ValueTransformer 函数
- excel - 请参阅动态工作簿
- makefile - Makefile if 语句导致一些奇怪的行为
- laravel - 更改外键而不丢失列中的数据
- javascript - 从 json 数组计算变量中的总值
- c# - 清除了 nuget locals,现在如何撤消它?
- docker - 无法将音量链接到 linux 上的 rocker/rstudio 容器
- ubuntu - 消息“无法运行 arm-none-eabi-gdb:找不到 libncurses.so.5”