Мне надо разбить большой csv файл на части по 100000 строк. В csv-файле есть заголовки и их нужно добавить к каждой части.
На stackoverflow видел решение в несколько строчек, но мне очень хочется найти решение в одну строку, пусть и длинную, т.к. вызов split происходит из python-скрипта.
Подскажи́те?
split: сохранить первую строку в каждый файл
На stackoverflow видел решение в несколько строчек, но мне очень хочется найти решение в одну строку, пусть и длинную, т.к. вызов split происходит из python-скрипта.
Запишите тот скрипт в одну строчку или, в конце концов, запишите отдельным скриптом, его и вызывайте.
Но правильнее — решить эту задачу средствами Python'а ;)
Судя по всему, файлы большие, поэтому целиком лучше не читать. Навскидку как-то так:
#!/usr/bin/env python
#_*_ coding: utf-8 _*_
def writer(header, part, outfilename):
with open(outfilename, 'w') as z:
z.write(header)
z.writelines(part)
with open('file.txt', 'r') as f:
header = f.readline()
partnum = 0
linecounter = 1
part = []
for line in f:
if linecounter < 100000:
part.append(line)
linecounter += 1
else:
part.append(line)
outfilename = "out%d.txt" % partnum
writer(header, part, outfilename)
partnum += 1
linecounter = 1
part = []
if len(part) > 0:
outfilename = "out%d.txt" % partnum
writer(header, part, outfilename)
Спасибо за ответы,
я сделал разделение файлов в питоне.