Изменение значения переменной, пока компьютер не выключится? - PullRequest
0 голосов
/ 27 марта 2019

Я пишу программу на python, которая имеет три модуля: 1. settings.py 2. init.py 3. main.py

settings.py только имеет одну логическую переменную, цель состоит в том, чтобыиспользовать его как глобальную переменную (назовем ее var, инициализированной как False) для модулей

init.py импортирует var и устанавливает ее на True после выполнения некоторых действий в функции

main.py должен проверить, является ли var == True.Если да, продолжайте с программой, иначе попросите пользователя дать некоторые инструкции командной строки (скажем, prg start), которые затем вызовут функцию в init.py, который, в свою очередь, также установит var==True

Проблемазаключается в том, что, поскольку я создал программу, которая принимает аргументы от CLI, var всегда имеет значение False.Таким образом, единственная команда, которую принимает CLI, это prg start, иначе она печатает сообщение об ошибке, которое я написал.

Мне нужен какой-то метод, чтобы позволить var остаться True до конца сеанса, а сеанс фактическипереводит до тех пор, пока компьютер не выключится.

код для main.py

first = sys.argv[0]
arguments = sys.argv[1:]

second = arguments[0]


if settings.var == False and second != "start":
    print "Error, type \'prg start\' to start"
    sys.exit(0)

if second == "start":
    init.start()

Вот что я пытаюсь сделать:

pi @ raspberrypi: ~ $ prg start

pi @ raspberrypi: ~ $ prg set color 4

Success

что происходит сейчас:

pi @ raspberrypi: ~ $ prg start

pi @ raspberrypi: ~ $ prg set color 4

Ошибка, введите 'prg start' для запуска

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

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

Решения, которые приходят на ум:

Файл:

Запись времени последней загрузкив файл также добавьте последний 'prg start раз - выясните, был ли последний после первого:

  • Linux: last reboot + datetime вашего последнего 'prg start' вызова -Вы можете выяснить, произошла ли перезагрузка до / после
  • Windows: systeminfo | find /i "Boot Time" (или как там это называется на вашем языке), тот же принцип

Файл не исчезает, ноВаше «время последней перезагрузки» будет сброшено при перезагрузке.Вы могли бы просто сойти с сбора 'prg start' временных меток в вашем файле и проверить «вживую» по текущему значению «последней перезагрузки», если запускать с другими параметрами.

Сервер / Клиент:

Создает независимый "серверный" процесс на первом 'prg start' - проверьте, работает ли этот процесс, используя

Процесс "сервер" исчезнет при перезагрузке (или при ручном уничтожении - но то же самое происходит и при удалении файла ...)

Похожие:

0 голосов
/ 27 марта 2019

Вы можете использовать файл для постоянного хранения переменной!

...