Форум сайта python.su
2
Извиняюсь за долгое отсутствие. Сейчас прочитаю ветку и сегодня напишу, что есть на данный момент и попробую ответить на ваши вопросы.
Не заглядывал, т.к. думал, что ответ уже дали и дальше самому, а оказалось, что люди еще пишут.
Офлайн
2
doza_and2) Т.е. нужно будет на комп ресепшина установить питон? Для локальной машины(моей) никаких проблем с пользованием .py файлов нету, но для программы общего пользования хотелось бы независимости. Если эту софтинку перенести на другой комп позже, то снова устанавливать питон?
1 Я двумя руками поддержу мнение что в эксел. эти данные не надо пихать. Если интересно могу пару страниц недостатков такого подхода привести.
2. Я двумя руками проголосую за не высказанное пока мнение что не нужно паковать вашу программу в один экзешник. Файл *.py будет гораздо более удобен.
FishHookФирма существует больше 10и лет, просто до сих пор все записи делались ручкой в бумажном журнале. Т.к. искать в таком виде не очень удобно, попросили склепать програмку.
Ну это они сейчас так решили. Через полгода, когда данных станет много, они поймут, что им нужна какая-то минимальная бизнес-аналитика, отчеты какие-то, оперативный доступ к данным одновременно несколькими сотрудниками. Если бизнес не будет развиваться, то и начинать его не стоит. Вы же, когда программу пишете, подразумеваете, что она будет расширяться и обрастать функционалом?
doza_and30000 записей для нас это много. В день приходят и уходят около 1 - 10 пакетов, что дает нам несколько лет.
Файл порядка 10 Мб будет обрабатываться очень быстро (сравнимо с временем на запуск приложения). Для вас это ~ 30000 записей. Это много? реально какая глубина по времени вам нужна?. Если больше, то да, субд неплохое решение. Если нет то и файла хватит.
Z_MСейчас пробую приделать гуи через PyQt4 на питоне 3.4.4 (на 3.5 при экспорте в .exe вываливаются ошибки, которых нету на 3.4, поэтому пока делаю через 3.4, используя то pyinstaller, то cx_Freeze).
Вот и рабочий совет для Puten:
Qt + pythonQt + openpyxl
# Post scanner # # Version 0.1 # # Asks some questions and saves user input in a .csv file # Each next run of the program adds new data to the existing .csv file # # TODO: # 1) If file is in use, retry to save, not just finish the program # 2) Attach gui # 3) More, but can't remember import datetime import csv from glob import glob # Constants COLUMN_NAMES = ( 'DATUM / TIJD', 'TRACKINGSNUMMER', 'AANTAL PAKKETTEN', 'GETEKEND DOOR', 'POST BEDRIJF') QUESTIONS = ( '\nScan the TRACKINGNUMBER:', '\nAMOUNT of packets?', '\nWHO scans?', '\nWhich POST?') answers = list() # Print each question and save user input in a list for question in QUESTIONS: print(question) answers.append(input()) def csv_save(data_to_write): with open('post.csv', 'a', newline='') as csv_out: wtr = csv.writer(csv_out, dialect='excel') wtr.writerow(data_to_write) # Check if file named 'post.csv' exists file_exists = glob('post.csv') # Add current time to answers list at 1st position (index 0) time_format = '%a %d %b %Y %H:%M' # format 'Sat 09 Jan 2016 11:05' time_now = datetime.datetime.now() answers.insert(0, time_now.strftime(time_format)) # Open .csv file(or create new one if it doesn't exists + write COLUNMS) # and write answers, comma separated if not file_exists: print('\nFile does not exists.') csv_save(COLUMN_NAMES) csv_save(answers) print('\nNew file is created.') print('\nAll data is saved.') else: try: csv_save(answers) print('\nAll data is saved.') except PermissionError: print("Can't save, file is in use.")


Отредактировано Puten (Янв. 11, 2016 21:15:38)
Офлайн
0
Эх, наврал: Altium умеет в html BOM-report делать, но некрасивый, и наши его не используют.
py.user.nextКесарю - кесарево. Что-то хорошо там, что-то здесь
А зачем тебе данные в MySQL? Делай все данные в Excel

py.user.nextНет: OpenOffice (LibreOffice) спокойно откроет excel файлы.
Нужно купить пакет программ
py.user.nextТак не всегда это надо. Вот например: есть отчет для 1шт чего-то и N - кол-во штук. И вот для разных N генери разные отчеты. А в excel добавил ячейку = *N. Плюс готовый поиск, сортировка.
а у остальных оно как обновится?
Офлайн
568
Z_MТолько вот в MS Office после правок в LibreOffice слетает форматирование.
Нет: OpenOffice (LibreOffice) спокойно откроет excel файлы.
Офлайн
0
PutenНу … здесь нам не по пути. Я часть своего кода по-позже выложу, так чтоб, кому интересно, могли использовать.
Сейчас пробую приделать гуи через PyQt4
Офлайн
2
Z_M
Нет: OpenOffice (LibreOffice) спокойно откроет excel файлы.
FishHookПарни, не нужно спорить, пакет офис 2003 -2007 установлен на все компы, так что эксель формат всем устраивает.
Только вот в MS Office после правок в LibreOffice слетает форматирование.
Отредактировано Puten (Янв. 11, 2016 20:51:20)
Офлайн
26
Офлайн
2
ajib6eptДа, на данный момент сохраняет в .csv.
Формат все-таки csv, а не xlsx?
Офлайн
253
FishHookНе соглашусь. Правда мой опыт ограничивается вордом. Обычно для сложных документов
Только вот в MS Office после правок в LibreOffice слетает форматирование.
Puten
Если эту софтинку перенести на другой комп позже, то снова устанавливать питон?
import os import datetime import yaml# may be ConfigParser #import subprocess as sp fnm='post.csv' file_exists = os.path.exists(fnm) # для проверки существования есть функция with open(fnm,"a") as f: if not file_exists: f.write("DATUM / TIJD\tTRACKINGSNUMMER\tAANTAL PAKKETTEN\tGETEKEND DOOR\tPOST\n") # sp.check_call("notepad cfg.yaml",shell=1) # конфиг можно подредактировать редактором with open("cfg.yaml","r") as cfg: data=yaml.load(cfg) data.insert(0,datetime.datetime.now()) # почти всегда лучше брать формат времени по умолчанию f.write("\t".join(map(str,data))) f.write("\n")
- 3 # Scan the TRACKINGNUMBER - 3 # AMOUNT of packets - Arrived # Which POST - Anrey # WHO scans
Отредактировано doza_and (Янв. 11, 2016 21:20:33)
Офлайн
2
doza_andВ курсе, как работает cx_Freeze, но итоговый вариант выглядит неплохо. Пихать лишний софт на каждый комп не очень удобно. Плюс, если кому показать, как программа работает на данный момент, опять же, не нужно сначала устанавливать питон.
то прятанье головы в песок. Питон все равно будет установлен cx_freeze, но будет заархивирован и будут выброшены некоторые пакеты. Сделайте дистрибутив и всем будет до лампочки один там файл или 100.
doza_and
По поводу кода.
Совершенно непонятно в какой момент данные приходят со сканера.
doza_andЕсли формат времени оставляю по умолчанию, то он мне выдает “2016-01-11 21:01:56.311618”, что не удобно от слова совсем. Формат “Sat 09 Jan 2016 11:05” подгонял под себя.
import os
import datetime
import yaml# may be ConfigParser
#import subprocess as sp
fnm='post.csv'
file_exists = os.path.exists(fnm) # для проверки существования есть функция
with open(fnm,“a”) as f:
if not file_exists:
f.write(“DATUM / TIJD\tTRACKINGSNUMMER\tAANTAL PAKKETTEN\tGETEKEND DOOR\tPOST\n”)
# sp.check_call(“notepad cfg.yaml”,shell=1) # конфиг можно подредактировать редактором
with open(“cfg.yaml”,“r”) as cfg:
data=yaml.load(cfg)
data.insert(0,datetime.datetime.now()) # почти всегда лучше брать формат времени по умолчанию
f.write(“\t”.join(map(str,data)))
f.write(“\n”)
doza_andПоясните, если не трудно? У меня 4 вопроса и консоль ожидает 4 ответа. Что не так?
Ваши сообщения в консоль практически не имеют смысла. Может только приветствие имеет смысл.
with open("cfg.yaml","r") as cfg: data=yaml.load(cfg) data.insert(0,datetime.datetime.now()) # почти всегда лучше брать формат времени по умолчанию f.write("\t".join(map(str,data))) f.write("\n")
with open("cfg.yaml", "r") as cfg: data = yaml.load(cfg) answers.insert(0, datetime.datetime.now()) f.write("\t".join(map(str, answers))) f.write("\n")
Отредактировано Puten (Янв. 11, 2016 22:44:36)
Офлайн