Есть ли функция Python, которая позволит мне взять основной файл CSV и разбить его на строки по 100? - PullRequest
0 голосов
/ 22 июня 2019

У меня есть основной CSV-файл, содержащий 3600 строк.Я хотел бы перебирать файл по 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 голосов
/ 22 июня 2019

Если вы используете 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 строк.

Единственным недостатком этого подхода является то, что первая строка файла не повторяется в верхней части каждого частичного файла.

...