是否有一个python函数可以让我获取一个主CSV文件并将其拆分为100行?

时间:2019-06-21 23:29:18

标签: python-3.x export-to-csv

我有一个包含3600行的主CSV文件。我想一次遍历文件100行,然后将它们保存到自己的CSV文件中,因此总共有36个CSV文件。

预期结果:

CSV 1-第1-100行

CSV 2-第101-201行

我尝试使用一些开放代码行,并获得了半自动解决方案,但是我不得不重命名文件并增加行数。

from itertools import islice
import csv
with open("MKT1902 - MYLD Master Data.csv", "r") as myfile:
    head = list(islice(myfile, 101))

with open("MYLD July Data - 1.csv", "w") as f2:
    for item in head:
        f2.write(item)
AcctNo  MotCode Full Name   Addr1   City    ST  Zip Salutation
CON-123 10005876    Mr. Tom Smith   123 E Main St   Orlando FL  12345   Mr. Smith
CON-124 10005876    Ms. Jane Doe    124 E Main St   Orlando FL  12345   Ms. Doe
CON-125 10005876    Mr. Jeremy Grady    125 E Main St   Orlando FL  12345   Mr. Grady
CON-126 10005876    Ms. Sara Rogers 126 E Main St   Orlando FL  12345   Ms. Rogers
CON-127 10005876    Mrs. Terra Miller   127 E Main St   Orlando FL  12345   Mrs. Miller
CON-128 10005876    Mr. Jack Schultz    128 E Main St   Orlando FL  12345   Mr. Schultz
CON-129 10005876    Mr. Bryan Saturno   129 E Main St   Orlando FL  12345   Mr. Saturno
CON-130 10005876    Mr. Will Francis    130 E Main St   Orlando FL  12345   Mr. Francis
CON-131 10005876    Ms. Amy Lynn    131 E Main St   Orlando FL  12345   Ms. Lynn

1 个答案:

答案 0 :(得分:0)

如果您使用的是Linux,并且.csv文件中没有跨行的记录,则可以使用split命令为您完成此操作。

Unix / Linux有许多用于处理诸如CSV文件之类的文本文件的工具。

这是一个例子:

这是我的master.csv文件:

$ ls -l
total 280
-rw-rw-r-- 1 andy andy 286576 Jun 21 20:17 master.csv

它长13,449行

$ wc -l master.csv
13445 master.csv

我将使用一些参数调用split,以指定我希望它被分解。

$ split --lines=100 --numeric-suffixes --suffix-length=3 master.csv part

现在我有135个以part开头的文件。

$ ls
master.csv  part016  part033  part050  part067  part084  part101  part118
part000     part017  part034  part051  part068  part085  part102  part119
part001     part018  part035  part052  part069  part086  part103  part120
part002     part019  part036  part053  part070  part087  part104  part121
part003     part020  part037  part054  part071  part088  part105  part122
part004     part021  part038  part055  part072  part089  part106  part123
part005     part022  part039  part056  part073  part090  part107  part124
part006     part023  part040  part057  part074  part091  part108  part125
part007     part024  part041  part058  part075  part092  part109  part126
part008     part025  part042  part059  part076  part093  part110  part127
part009     part026  part043  part060  part077  part094  part111  part128
part010     part027  part044  part061  part078  part095  part112  part129
part011     part028  part045  part062  part079  part096  part113  part130
part012     part029  part046  part063  part080  part097  part114  part131
part013     part030  part047  part064  part081  part098  part115  part132
part014     part031  part048  part065  part082  part099  part116  part133
part015     part032  part049  part066  part083  part100  part117  part134

每个零件文件长100行。这是前十名:

$ wc -l part00*
  100 part000
  100 part001
  100 part002
  100 part003
  100 part004
  100 part005
  100 part006
  100 part007
  100 part008
  100 part009
 1000 total

最后5个

$ wc -l part13*
 100 part130
 100 part131
 100 part132
 100 part133
  45 part134
 445 total

当然,part134文件只有45行。

这种方法的缺点是您不会在每个部分文件的顶部重复出现文件的第一行。