Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 27, 2015 23:35:24

Stright
От: Кострома
Зарегистрирован: 2015-01-20
Сообщения: 139
Репутация: +  16  -
Профиль   Отправить e-mail  

Как правильно реализовать ввод пользователем данных, необходимых для программы?

Здравствуйте, пишу скрипт, который состоит из 2 модулей, в первом модуле описывается класс Project, который создает экземпляры классов таблиц проекта (Table1, Table2, Table3 и т.д.), находящихся во 2 модуле, производит некоторые действия с ними в цикле с помощью вызова их методов и записывает результаты в файлы. Т.е. при запуске программы пользователь видит список таблиц в консоли, вводит номера необходимых ему таблиц и по этому списку номеров программа производит вычисления таблиц и выводит в файлы результаты.
Основная часть данных для расчета таблиц берется из БД, но часть данных должна передаваться в программу непосредственно пользователем. Рассматриваю следующие способы передачи пользовательских данных:
Вариант 1 - параметры для каждой таблицы передаются через input'ы, т.е при создании экземпляра Table1 пользователь вводит данные необходимые для вычисления таблицы 1 и т.д.
Вариант 2 - создать третий модуль, где будут находиться данные для вычислений таблиц в виде переменных (заполняется пользователем перед запуском скрипта), и который импортируется в модуль с таблицами

Как правильно реализовать ввод необходимых данных пользователем? Argparse для этих целей не рассматриваю, так как пользовательских данных для расчета всех таблиц может быть довольно много

Офлайн

#2 Окт. 28, 2015 08:16:31

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

Как правильно реализовать ввод пользователем данных, необходимых для программы?

Есть очень много вариантов. Не очень ясно в чем у вас проблема. Стилю вашего интерфейса подойдет подход когда вы создаете файл со значениями по умолчанию, а затем вызываете текстовый редактор для этого файла. После закрытия редактора считываете файл и используете значения (если конечно пользователь не наколбасил)

import os
import yaml
import subprocess as sp
nm="template_input.yaml"
datadict={"a":1,"b":2}
with open(nm,w) as f:
    yaml.dump(datadict,f)
try:
    sp.check_call("vim {0}".format(nm),shell=1)
    with open(nm,r) as f:
        userinput = yaml.load(f)
except:
    print("bad input")
finally:
    os.remove(nm)



Отредактировано doza_and (Окт. 28, 2015 08:20:10)

Офлайн

#3 Окт. 28, 2015 08:31:22

Stright
От: Кострома
Зарегистрирован: 2015-01-20
Сообщения: 139
Репутация: +  16  -
Профиль   Отправить e-mail  

Как правильно реализовать ввод пользователем данных, необходимых для программы?

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

Отредактировано Stright (Окт. 28, 2015 08:34:05)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version