Как перезапускать программу в python

Я пишу программу Python, которая, если пользователь меняет настройки во время ее запуска, должна быть перезапущена, чтобы применить измененные настройки. Есть ли способ сделать это? Я думаю что-то вроде:

Примечание. Я нахожусь в Windows, если это имеет значение

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

Под этим я имею в виду:

У вас есть управляющая программа, которая делает не что иное, как запуск вашей программы (с теми же параметрами, которые были заданы) в цикле, когда ваша программа выходит с определенным кодом «перезагрузки». Это может быть так же просто, как файл cmd или сложнее, чем другая (очень простая) программа Python, использующая os.system ). В принципе, до тех пор, пока контрольная программа получает код «перезагрузка», он будет повторно запускать вашу программу с точно такими же параметрами. Любой другой код заставит его выйти с этим кодом.

PyCharm не запускается код

Если вы хотите полностью выйти, попробуйте запустить свою настоящую программу Python с кодом возврата 0 (или что-либо, что не является кодом перезапуска в ситуации с ошибкой).

Если вы просто хотите перейти на другую итерацию своей программы (например, перечитывать конфигурацию), выйдите с кодом «перезапуска», распознанным управляющей программой.

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

Но, если вы этого не сделаете, то путь, который я бы выбрал.

Чтобы предоставить примерный код для первого параметра (это в Windows, но под Cygwin — те же основные правила должны применяться для Windows Python, но вы должны проверить возвращаемые значения из os.system ).:

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

Как сделать перезапуск Python программы?

Я ещё только учу Python. Написал для себя маленькую программу, что-то вроде конвертера валют, только для игры. Через PyInstaller сделал exe программы, но после вывода результата окно сразу закрывается. как сделать, что бы окно не закрывалось и была возможность начать заново, что бы для каждого расчёта не запускать программу по новой?

Самое простое — обернуть всю логику в бесконечный цикл while:

Есть альтернативное решение:

В данном случае оно конечно не будет удобно, но иногда хорошо.

Перезапустите python- script изнутри самого себя

У меня есть приложение GTK на основе python, которое загружает несколько модулей. Он запускается с терминала (linux) следующим образом:

Читайте также:
Как написать программу для заполнения документов

./myscript.py —some-flag setting

Как сделать запуск программ по расписанию

Внутри программы пользователь может загрузить (используя Git) новые версии. Если такое существует/загружено, появляется кнопка, которая, как мне хотелось бы, перезапустила бы программу с недавно скомпилированным содержимым (включая зависимости/импорт). Предпочтительно он также перезапускает его, используя содержимое sys.argv , чтобы сохранить все флаги такими, какими они были.

Так что я не могу найти/нужна хорошая процедура перезапуска, которая убивает текущий экземпляр программы и запускает новый, используя те же аргументы.

Предпочтительно, решение должно работать и для Windows и Mac, но это не существенно.

ОТВЕТЫ

Ответ 1
Ответ 2

Я думаю, что это более сложный ответ, так как иногда у вас может быть слишком много открытых файловых объектов и дескрипторов, которые могут вызвать проблемы с памятью или параллельные подключения к сетевому устройству.

Ответ 3

UPDATE — из приведенного выше ответа с некоторым примером для дальнейшего использования

И у меня есть server.py , где мне нужно перезапустить само приложение, поэтому у меня было:

но это не перезапустило само приложение, выполнив команду runme.sh, поэтому, когда я использовал этот способ:

Затем я смог перезапустить себя

Ответ 4

Я знаю, что это решение технически не является то, о чем вы просите, но если вы хотите быть на 100% уверенным, что вы освободили все или не хотите полагаться на зависимости, вы можете просто запустить script из цикла в другой:

Затем вы можете перезапустить main.py так же, как:

Ответ 5

В моем случае в пути к файлу Python есть пробелы. Таким образом, добавив правильное форматирование, проблема может быть решена.

Обратите внимание, что в моем случае мой файл python не имеет других аргументов. Так что, если у вас есть другие аргументы, вы должны разобраться с ними.

Это решает проблему перезапуска скрипта Python с пробелами в пути:

Ответ 6

Работает на Windows (без аргументов)

Ответ 7

Добавьте это в ваш main.py

Ответ 8

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

Таким образом, пользователь может ввести опцию «Y/N», чтобы перезапустить программу или нет.

Например, я делаю калькулятор и хочу, чтобы после выдачи результата скрипт возвращался к вопросу «введите знак операции». Как мне это сделать?

what = input( «Введите знак операции (+, -, *, /, ^): «)

a = float(input( «Введите первое число: «))
b = float(input( «Введите второе число: «))

if what == «+»:
c = a + b
print («Результат: » + str(c))

elif what == «-«:
c = a — b
print («Результат: » + str(c))

elif what == «*»:
c = a * b
print («Результат: » + str(c))

elif what == «/»:
c = a / b
print («Результат: » + str(c))

elif what == «^»:
c = a ** b
print («Результат: » + str(c))

else:
print («Похоже, вы неправильно ввели знак операции!»)

Правило хорошего тона в python — оборачивать работающий код в методы и функции.

Стандартный шаблон для main:

В вашем случае весь код имеет смысл обернуть main, а main в цикл.

Читайте также:
Программа госзакупки инструкция по применению

Также нужно проверять пользовательский ввод (добавил обработку исключения, если пользователь ввёл не float).

Старайтесь не повторять одно и то же в коде (print(«Результат»)). Такой стиль называется «индусским кодом» и считается плохим тоном в программировании.

Хорошим тоном будет подумать штатных о способах выхода из программы. Вариантов не пишу, предлагаю продумать самостоятельно.

while True:
в самое начало и всему ниже отступ увеличить одинаково
последний elif убрать
и да, import запихни в самый верх.
не делают импорты посередине кода

сделал, как вы сказали, программа всё равно не перезапускается (

クマのプーさん Мудрец (15473) потому что raise SystemExit относится к блоку if o == ‘нет’, а не само по себе

Как мы знаем, Python является популярным языком сценариев из-за его универсальных возможностей. В этой статье мы напишем скрипт Python для перезагрузки компьютера. Давайте начнем с того, как перезапустить систему с Python.

Note: For this to work, you have to import os library in the ide. If you don’t have it, then ‘ pip install os ‘ through the Command Prompt.

Causion: Please ensure that you save and close all the program before running this code on the IDLE, as the below program will immediately restart your computer.

Ниже приведена реализация Python —

restart = input ( «Do you wish to restart your computer ? (yes / no): » )

if restart = = ‘no’ :

os.system( «shutdown /r /t 1» )

  • Как сделать пищевую пирамиду по технологии
  • Как сделать из браслета собачку
  • Как сделать идеальное отражение в ryse son of rome
  • Как сделать пудинг в мультиварке
  • Как сделать светящийся футаж

Источник: 1svoimi-rukami.ru

Покоряем Python — уроки для начинающих

В отличие от инструкций import и from :
• reload – это не инструкция, а функция.
• Функции reload передается существующий объект модуля, а не имя.
• В Python 3.0 функции reload находится в модуле imp , который требуется импортировать, чтобы получить доступ к функции. Функция reload ожидает получить объект, поэтому к моменту ее вызова модуль уже должен быть успешно импортирован (если операция импорта оказалась неудачной из-за синтаксических или каких-либо других ошибок, вам может потребоваться повторить ее, прежде чем можно будет повторно загрузить модуль).

Кроме того, синтаксис инструкции import и функции reload отличается: аргумент должен передаваться функции reload в круглых скобках, а инструкции import – без них. Повторная загрузка модуля выполняется примерно следующим образом:
import module # Первоначальное импортирование
. используются атрибуты модуля.
. # Теперь выполняются изменения в файле модуля
.
from imp import reload # Импортировать функцию reload (в 3.0)
reload(module) # Загрузить обновленный модуль
. используются атрибуты модуля.
Это типичный случай, когда вы импортируете модуль, затем изменяете исходный программный код в текстовом редакторе, а потом повторно загружаете его. Когда вы вызываете функцию reload, интерпретатор повторно читает файл с исходными текстами и выполняет инструкции, находящиеся на верхнем уровне. Пожалуй, самое важное, что следует знать о функции reload , – это то, что она изменяет непосредственно сам объект модуля – она не удаляет и не создает его повторно. Вследствие этого все ссылки на объект модуля, имеющиеся в программе, автоматически будут учитывать изменения, произошедшие в результате повторной загрузки. А теперь подробнее о том, как происходит повторная загрузка:
• Функция reload запускает новый программный код в файле модуля в текущем пространстве имен модуля. При повторном выполнении программный код перезаписывает существующее пространство имен вместо того, чтобы удалять его и создавать вновь.
• Инструкции присваивания на верхнем уровне файла замещают имена новыми значениями. Например, повторный запуск инструкции def приводит к замещению предыдущей версии функции в пространстве имен модуля, выполняя повторную операцию присваивания имени функции.
• Повторная загрузка оказывает воздействие на всех клиентов, использовавших инструкцию import для получения доступа к модулю. Клиенты, использовавшие инструкцию import, получают доступ к атрибутам модуля, указывая полные их имена, поэтому после повторной загрузки они будут получать новые значения атрибутов.
• Повторная загрузка будет воздействовать лишь на тех клиентов, которые еще только будут использовать инструкцию from в будущем. Клиенты, которые использовали инструкцию from для получения доступа к атрибутам в прошлом, не заметят изменений, произошедших в результате повторной загрузки, – они по-прежнему будут ссылаться на старые объекты, полученные до выполнения перезагрузки.

Читайте также:
В чем особенность окна программы проводник

Источник: pythlife.blogspot.com

Как перезапустить программу на Python

Вызов функции start() на завершенном процессе приведет к ошибке AssertionError, указывающей на то, что процесс может быть запущен только один раз. Вместо этого, чтобы перезапустить процесс в Python, необходимо создать новый экземпляр процесса с той же конфигурацией, а затем вызвать функцию start().

Связанные ответы

Что делает функция reset () в Python?
Метод reset (Python)

  1. Этот метод доступен в режиме чтения, записи или добавления.
  2. В режимах чтения и записи reset перемещает указатель записи в первый регистр, что позволяет выполнять несколько передач данных. …
  3. При выполнении нескольких проходов данных метод reset должен быть вызван до определения новых переменных в последующих проходах.

Как повторить программу в Python?

repeat() Модуль itertools предоставляет функцию repeat() для того, чтобы практиковать повторение в Python. В функции repeat() мы предоставляем данные, а также количество повторений данных.

Как перезапустить Python IDLE?

Чтобы выполнить файл в IDLE, просто нажмите клавишу F5 на клавиатуре. Вы также можете выбрать Run → Run Module в строке меню. Любой из этих вариантов перезапустит интерпретатор Python, а затем запустит написанный вами код со свежим интерпретатором.

Как перезапустить программу на основе пользовательского ввода Python?

Вы можете просто поместить всю программу в определяемую пользователем функцию (конечно, вы должны сделать дополнительный отступ) и перезапустить ее в любое время, используя эту строку кода: myfunctionname() .

Как выполнить сброс настроек?
Как выполнить Factory Reset на смартфоне Android?

  1. Нажмите Настройки.
  2. Нажмите пункт Общие https://geocentr-msk.ru/python-ru/kak-perezapustit-programmu-na-python/» target=»_blank»]geocentr-msk.ru[/mask_link]
Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru