Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 24, 2014 20:59:27

Sirius_W
Зарегистрирован: 2014-10-24
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

как разбить csv-файл, чтобы сформировать отдельные файлы, содержащие одинаковые данные?

Была поставлена задача:
Человек выгружает раз в неделю статистику о маршруте движения автомобиля в один из файл csv.

Нашел скрипт
http://superuser.com/questions/762449/splitting-a-7-million-row-csv-by-a-specific-column

Работает. Однако он каждую строку преобразует в отдельный файл, а нужно, чтоб все записи, имеющие в себе одинаковую отметку даты 13-10-2014, к примеру, собирались в один файл.

Есть ли возможность добавить в скрипт такой код, чтобы:
- все записи, имеющие в себе одинаковую отметку даты 13-10-2014, к примеру, собирались в один файл, а не создавалась гора файлов с 1 строкой внутри и отметкой 13-10-2014?
- каждый созданный файл конвертировался в формат *.kmx?

Заранее благодарю за любую подсказку или наводку
Ранее я немного работал с Python, но на любительском уровне, а теперь вот пришлось столкнутся с такой проблемой.

p.s. сложность еще заключается в том, что в оригинальном выгружаемом файле в колонке с датой рядом еще время стоит. Не иначе, как вручную, удалять приходится все “:” , иначе не формируется файл.

Офлайн

#2 Окт. 24, 2014 22:46:58

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

как разбить csv-файл, чтобы сформировать отдельные файлы, содержащие одинаковые данные?

1)Нужно цикл сравнения дополнительно тогда городить.
2) не совсем ясно что за kmx и где он используется, существуют ли аналоги или конвертеры вообще.

Офлайн

#3 Окт. 25, 2014 10:40:28

Sirius_W
Зарегистрирован: 2014-10-24
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

как разбить csv-файл, чтобы сформировать отдельные файлы, содержащие одинаковые данные?

sypper-pit
1)Нужно цикл сравнения дополнительно тогда городить.2) не совсем ясно что за kmx и где он используется, существуют ли аналоги или конвертеры вообще.

Прошу прощения, сонный вчера сидел: файл *.kml - это для Google Earth.

Можно ли сделать, чтоб как-то следующая часть скрипта показывала окошко, где я бы смог выбрать нужные файлы, а скрипт отработает и выдаст мне вместо 10 выбранных, к примеру, один объединяющий в себе эти 10?

Может как-то упростить задачу?

Как я выше упоминал, вся сложность состоит в том, что в оригинальном выгружаемом файле рядом с датой стоит время в формате 00:00:00 и приходится вручную убирать все :, ибо выскакивает ошибка при разбивке о невозможности создать файл с именем (пример) 2014-10-13 06:12:48 Ну, это понятно, почему.

Офлайн

#4 Окт. 25, 2014 13:43:45

Sirius_W
Зарегистрирован: 2014-10-24
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

как разбить csv-файл, чтобы сформировать отдельные файлы, содержащие одинаковые данные?

В общем, первый скрипт http://superuser.com/questions/762449/splitting-a-7-million-row-csv-by-a-specific-column разбивает на строки.
А вот этот:

#!/usr/bin/env python3
import time, glob
import binascii
import csv
import os.path
import sys
from tkinter.filedialog import askopenfilename, askdirectory
from tkinter.simpledialog import askinteger

read_files = glob.glob(“*.CSV”)

with open(“result.CSV”, “wb”) as outfile:
for f in read_files:
with open(f, “rb”) as infile:
outfile.write(infile.read())

Соединяет до кучи те файлы, которые находят с ним в одной директории.

Реально ли во второй скрипт добавить диалоговое окно, чтобы была возможность выбора файлов, необходимых для соединения? А еще необходимо, чтобы result.CSV создавался именно в той папке, откуда была вызвана группа файлов. Чтоб записи поверх не происходило.

Офлайн

#5 Окт. 25, 2014 16:30:29

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

как разбить csv-файл, чтобы сформировать отдельные файлы, содержащие одинаковые данные?

import toolz
seq=[[1,2],[2,3],[2,5],[1,"aaa"]]
print toolz.itertoolz.groupby(lambda x:x[0], seq)
{1: [[1, 2], [1, 'aaa']], 2: [[2, 3], [2, 5]]}

прочитать можно просто readlines без выкрутасов.



Офлайн

#6 Окт. 25, 2014 16:34:45

Sirius_W
Зарегистрирован: 2014-10-24
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

как разбить csv-файл, чтобы сформировать отдельные файлы, содержащие одинаковые данные?

doza_and
А можно попросить комментарии добавить к строкам?
Я новичок, только начал изучать.

Заранее благодарю.

Отредактировано Sirius_W (Окт. 25, 2014 16:35:00)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version