Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 16, 2017 10:35:28

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Запись в CSV файл

Если задачу нельзя выполнить штатными офисными средствами (то что входит в компетенцию “пользователь ПК”) и нет специализированного средства, то это проблема прежде всего руководителя. Пусть нанимает программиста для решения проблемы, покупает ПО или доплачивает сотрудникам за компетенцию. Когда энтузиасты начинают решать проблемы производства собственными средствами, ничего хорошего из этого все равно не получится.



Офлайн

#2 Авг. 16, 2017 11:06:41

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2832
Репутация: +  186  -
Профиль   Отправить e-mail  

Запись в CSV файл

> в кодировке cp1251, а не Unicode - тогда Эксель все отображал корректно.

Попробуй в начало файла BOM записать.
https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%80%D0%BA%D0%B5%D1%80_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B1%D0%B0%D0%B9%D1%82%D0%BE%D0%B2



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Авг. 16, 2017 11:17:41)

Офлайн

#3 Авг. 16, 2017 12:01:28

exister
От: Minsk
Зарегистрирован: 2017-08-07
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись в CSV файл

FishHook
Если задачу нельзя выполнить штатными офисными средствами (то что входит в компетенцию “пользователь ПК”) и нет специализированного средства, то это проблема прежде всего руководителя. Пусть нанимает программиста для решения проблемы, покупает ПО или доплачивает сотрудникам за компетенцию. Когда энтузиасты начинают решать проблемы производства собственными средствами, ничего хорошего из этого все равно не получится.

Ничего не стоит так философствовать. Вы пробовали найти такого специалиста? А я пробовал:
1) Обращаться к доступным Python разработчикам на LinkedIn
2) Просил помощи у знакомых разработчиков
3) Создавал на fl.ru проект и искал фрилансера

Никто не смог решить мою сверхсложную задачу: то оказывалось, что они не настолько квалифицированные, то с CGI не работают, то, говорят, эксель - говно, делаейте в MySQL. А мне нужно сделать в Эксель и никак иначе. Конечно, питон-разработчики из Google, наверное, справились бы, но у меня таких знакомых нет, так что вариант один: делать все самостоятельно, опираясь на подсказки форумчан.

JOHN_16
я знаю. Но дешевле сделать xlsx чем менеджерам объяснять и слушать их недовольство. Серьезно тут не техническая проблема…

Все верно. Файл в конечном итоге пойдет девочке-менеджеру, которая будет с ним работать. Для простых менеджеров проблема переименовать файл или решить что делать с RAR файлом, а значит ни о каких макросах и даже импорте данных через меню Экселя и речи быть не может!

Я вчера с этим 13 часов возился и сегодня на свежую голову быстро решил проблему с кодировкой.
Всего-то надо было файл на запись открыть в желанном для Экселя режиме cp1251

 with open(dataFile, 'a', newline='', encoding='cp1251') as csvfile:
И все, Эксель прекрасно отображает кириллицу.

Остался вопрос с тем, как данные разделять по столбцам. Сейчас жесточайше буду вникать в документацию, но если кто-то в теме, буду очень признателен за подсказку, т.к. сроки на сдачу уже горят.

Отредактировано exister (Авг. 16, 2017 12:18:30)

Офлайн

#4 Авг. 16, 2017 12:29:56

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Запись в CSV файл

exister
вы неправильно ставите задачу
вот это вот всё что вы напридумывали - csv, CGI и прочее - это ерунда. Это не бизнес-задача, это вы взяли на себя не сою работу с самого начала и подстраиваете требования под свои умения. На таких условиях никто не будет с вами связываться. Сформируйте требования к программе, конкретно такие-то цели, такие-то результаты на основании таких-то манипуляций с такими-то физическими сущностями. А как это будет реализовано - не ваша забота.

Правильное ТЗ: реализовать систему учета товаров на складе для ООО “Вектор”.
Неправильное ТЗ: на основе моих трехлетних экспериментов с блокнотом и паинтом сделать не пойми что и не пойми для чего, главное оставить костяком системы блокнот и паинт, потому что я лучше знаю.



Офлайн

#5 Авг. 16, 2017 12:31:31

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Запись в CSV файл

exister
и вообще я не с вами беседовал а с Джоном



Офлайн

#6 Авг. 16, 2017 12:42:58

exister
От: Minsk
Зарегистрирован: 2017-08-07
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись в CSV файл

FishHook

Большое спасибо за ваше мнение. Но мне кажется такие философские рассуждения стоит вести в соответствующей ветке. А мы сейчас в разделе “Python для новичков”, где Новички задают вопросы и надеются получить конкретные ответы, а не рассуждение в стиле “наймите крутого спеца, который за вас все сделает”.

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

Остался открытым вопрос о том, как данные разделять по столбцам.

Отредактировано exister (Авг. 16, 2017 12:43:53)

Офлайн

#7 Авг. 16, 2017 12:50:34

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Запись в CSV файл

exister
Большое спасибо за ваше мнение. Но мне кажется такие философские рассуждения стоит вести в соответствующей ветке. А мы сейчас в разделе “Python для новичков”, где Новички задают вопросы и надеются получить конкретные ответы, а не рассуждение в стиле “наймите крутого спеца, который за вас все сделает”.

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

Цитату выше мне стоит расценивать как “философские рассуждения” или как “конкретные ответы”?
Не хочу задевать ваши чувства (постольку поскольку вы слишком обидчивая личность) но вам не кажется, что у вас слишком мало постов, чтобы указывать, что можно на этом форуме делать а чего нельзя? Это же просто невежливо.



Офлайн

#8 Авг. 16, 2017 14:01:03

exister
От: Minsk
Зарегистрирован: 2017-08-07
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись в CSV файл

Решил проблему и со столбиками.

Оказалось, что столбики разделяются между собой знаком “;”. Так что методу записи нужно всего-то добавить параметр

  delimiter=';'

Всем спасибо за помощь!

Офлайн

#9 Авг. 17, 2017 08:52:09

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10003
Репутация: +  857  -
Профиль   Отправить e-mail  

Запись в CSV файл

exister
У меня CGI скрипт, я уже подключал Google Sheets, но этим вариантом пользоваться нельзя, т.к. скрипт исполняется около 3 секунд, что просто нереально долго и неприемлемо в случае, если одновременно несколько пользователей заполняют форму. Честно говоря, Экселевские библиотеки я не подключал, но уверен, что они будут такие же медленные, как Гугловские.
Я имел в виду, что ты будешь хранить на сервере данные в CSV, а при запросе пользователя на сервере из csv-данных будет формироваться xls-файл и пользователь его будет скачивать себе.

Тебе надо описать задачу, а то как-то непонятно, что ты делаешь, но выглядит оно не очень. Многопользовательская, одновременная работа с csv-файлом уже вызывает вопросы.

А с кодировкой - везде используют utf-8, но винда использует cp1251. Если ты будешь под винду подгонять кодировку, то там (в данных) рано или поздно появится символ, которого нет в cp1251 и это вызовет ошибку. Поэтому кодировку держат в виде utf-8, а в виндовую переводят только в тех местах, где это надо, где настроить кодировку нельзя.

По разделителю - ну так, CSV (Comma-Separated Values, где Comma означает “запятая”) является определённым форматом и винда его просто не придерживается, а фактически использует DSV (Delimiter-Separated Values), где разделитель может быть любым. Но питон свой якобы csv-модуль тоже снабдил параметром, через который можно обрабатывать dsv-файлы.

Ещё там есть правило одно: открывай csv-файлы в питоне в бинарном режиме, какая бы там кодировка ни была, так как это важно для концов строк. Если открываешь файл в текстовом режиме, концы строк могут преобразовываться, тогда как формат CSV требует определённых концов строк. Поэтому в бинарном режиме открываешь, а потом перекодируешь строки.

И поставь себе Linux, так как большая часть проблем не касается ни питона, ни CSV, - это всё чисто виндовые заморочки, которых в лине - ноль.



Отредактировано py.user.next (Авг. 17, 2017 09:15:34)

Офлайн

#10 Авг. 17, 2017 10:13:16

exister
От: Minsk
Зарегистрирован: 2017-08-07
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись в CSV файл

py.user.next
Спасибо за инфу. Я работаю на сервере сразу, ошибки ловлю в лог файле.

Знаю, что все собравшиеся тут эксперты надо мной смеются и считают, что я маюсь херней. Но я не смог найти исполнителя на эту работу, а задачу ппц как нужно сделать. Да и мне интересно разобраться самому. А как уже закончу, буду спокойно учиться и никого не буду напрягать вопросами.

Задача глобальная у меня такая:
- принимать AJAX запросы от множества юзеров (будут оставлять свои данные после прохождения веб-игры)
- эти данные обработать так, чтобы юзеры не повторялись (не было два юзера с одной почтой или телефоном) - это если получится по времени
- предоставить по итогу возможность в любой время в табличном виде получить данные пользователей

Я хочу решить эту задачу таким образом:
- CGI скрипт принимает данные
- данные пишутся в CSV файл
- когда манагер делает запрос, исполняется второй скрипт, который на основании CSV файла делает Экселевский файл (мне не нравится из-за виндовых кодировок) или импортит данные в Гугл Таблицу (тут все работает и с UTF8)

Завтра, 18 проект должен быть сдан.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version