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

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

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)
Stright
Спасибо большое! Проблемы в общем-то и нет, в настоящее время каждая таблица считается отдельным скриптом, данные передаются через input'ы, начал объединять все в одну программу, вот и задумался, а какой же способ предпочтительнее использовать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB