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

Как сделать так, чтобы программа на python автоматически перезапускала себя? Итак, скажем, есть действительно простая программа, такая как:

var = input(«Hi! I like cheese! Do you like cheese?»).lower() if var == «yes»: print(«That’s awesome!»)

Теперь в оболочке Python вам нужно будет нажать либо кнопку «Выполнить», а затем «Запуск модуля (F5)», либо просто кнопку «f5» на клавиатуре. Это первый раз, когда вы запускаете его. Когда программа закончилась, вы вернетесь к своему файлу «Cheese.py» и затем нажмите «f5», чтобы снова запустить программу. Все со мной здесь?

Итак, мой вопрос: как заставить программу автоматически перезагружаться без необходимости делать это вручную?

DavidEclipse 15 Мар 2016 в 20:42

4 ответа

Лучший ответ

Это зависит от того, что вы подразумеваете под «перезагрузить себя». Если вы просто хотите непрерывно выполнять один и тот же код, вы можете заключить его в функцию, а затем вызвать его из цикла while True , например:

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


>>> def like_cheese(): . var = input(«Hi! I like cheese! Do you like cheese?»).lower() # Corrected the call to `.lower`. . if var == «yes»: . print(«That’s awesome!») . >>> while True: . like_cheese() . Hi! I like cheese! Do you like cheese?yes That’s awesome!

Hi! I like cheese! Do you like cheese?yes That’s awesome!

Если вы хотите фактически перезапустить сценарий, вы можете выполнить сценарий снова, заменив текущий процесс новым, выполнив следующие действия:

#! /bin/env python3 import os import sys def like_cheese(): var = input(«Hi! I like cheese! Do you like cheese?»).lower() if var == «yes»: print(«That’s awesome!») if __name__ == ‘__main__’: like_cheese() os.execv(__file__, sys.argv) # Run a new iteration of the current script, providing any command line args from the current iteration.

Это будет постоянно перезапускать скрипт, предоставляя аргументы командной строки от текущей версии к новой версии.

Читайте также:
Название дискотеки с игровой программы

Более подробное обсуждение этого метода можно найти в посте «Перезапуск скрипта Python внутри себя »от Петр Земек.

эта статья отмечает один элемент является:

Если вы используете вышеуказанное решение, имейте в виду, что exec*() функции вызывают немедленную замену текущего процесса, без очистки открытых файловых объектов. Поэтому, если у вас есть открытые файлы во время перезапуска скрипта, вы должны очистить они используют f.flush() или os.fsync(fd) перед вызовом exec*() функция .

Doug R. 1 Фев 2018 в 14:12

Или вы можете попробовать

$ chmod a+x «name».py

Затем вы можете запустить скрипт через

$ ./daemon.py

В такой ситуации, чтобы перезапустить скрипт, используйте следующий код:

os.execv(__file__, sys.argv)

В противном случае, когда вы запускаете скрипт через

$ python daemon.py

Используйте этот код:

os.execv(sys.executable, [‘python’] + sys.argv)

В любом случае, не забудьте импортировать sys module

L_J 14 Июл 2018 в 17:03

Я использую терминал на своем Mac, чтобы перезапустить некоторые из моих скриптов на Python с помощью функции ниже.

import subprocess def run_again(cmd): subprocess.call([«bash», «-c», «source ~/.profile; » + cmd])

Примечание: не забывайте пробел после «профиля»; или функция может молча сбоить!

Затем в нижней части моего сценария нужно перезапустить:

if some_condition: run_again(«python my_script.py %s» % my_new_arguments)

Исходный вопрос о сценарии с сыром:

if var != ‘yes’: run_again(«python my_cheese_script.py»)
exbctel 13 Окт 2017 в 18:50

Вы можете заключить что-то в while True: , чтобы оно выполнялось повторно, поскольку True всегда будет иметь значение True , например так:

while True: var = input(«Hi! I like cheese! Do you like cheese?»).lower() #

Есть еще одна проблема с вашим кодом, хотя; Вы не вызвали lower , поставив после него круглые скобки.

Источник: question-it.com

PYTHON ПЕРЕЗАПУСК СКРИПТА

Когда мы создаем скрипты на Python, возникает необходимость перезапуска программы для применения изменений. Для этого существует несколько способов.

Первый способ — перезапуск скрипта из командной строки. Для этого необходимо закрыть окно программы, затем ввести команду python имя_скрипта.py . При этом программа перезапустится.

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

Второй способ — использование особого модуля os в Python. Нам необходимо импортировать этот модуль и использовать команду os.execv(__file__, sys.argv) . Эта команда перезапустит текущий скрипт. Пример кода:

import os
import sys

def restart_program():
python = sys.executable
os.execl(python, python, * sys.argv)

if __name__ == «__main__»:
restart_program()

Третий способ — использование библиотеки watchdog . Она позволяет отслеживать изменения в файлах и автоматически перезапускать скрипт при обнаружении изменений. Пример кода:

import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

def on_any_event(self, event):
os.system(«python скрипт.py»)

observer = Observer()
observer.schedule(Handler(), path=’.’, recursive=True)
observer.start()

try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()

Передача параметров в скрипт Python

Планирование и автозапуск Python скриптов по времени

Автозапуск программ на python

Python в .EXE ► КАК?

Как разгадывать капчу автоматически при парсинге

Як запустити #python скрипт на #windows

Новые материалы:

  • Книга программирование на python для начинающих скачать бесплатно
  • Как удалить переменную в python
  • Получить сертификат python
  • Python транспонирование матрицы zip
  • Кириллица в python
  • Pdf python скачать
  • Основы искусственного интеллекта в примерах на python
  • Описательная статистика в python
  • Из csv в xml python
  • Четные индексы python

Источник: pygame.ru

Как сделать программу Python автоматически перезапустить себя

Как заставить программу python автоматически перезапускать себя? Итак, скажем, есть действительно простая программа, например:

var = input(«Hi! I like cheese! Do you like cheese?»).lower() if var == «yes»: print(«That awesome!»)

Теперь в оболочке Python вам нужно нажать кнопку «Запустить», а затем «Запустить модуль (F5)» или просто кнопку «f5» на клавиатуре. Это первый раз, когда вы его запускаете. Когда программа закончится, вы вернетесь в свой файл «Cheese.py», а затем нажмите «f5», чтобы снова запустить программу.

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

Читайте также:
Datalook программа для настройки

DavidEclipse 15 март 2016, в 19:27
Поделиться

Вы имеете в виду, что вы просто хотите зациклить программу, или перезагрузить ее, или . что? Какую реальную проблему вы пытаетесь решить.

jonrsharpe 15 март 2016, в 17:45
morxa 15 март 2016, в 17:48
Поделиться:

4 ответа

Лучший ответ

Это зависит от того, что вы подразумеваете под «перезагрузкой». Если вы просто хотите постоянно выполнять один и тот же код, вы можете обернуть его в функцию, а затем вызвать его изнутри. while True loop, например:

>>> def like_cheese(): . var = input(«Hi! I like cheese! Do you like cheese?»).lower() # Corrected the call to ‘.lower’. . if var == «yes»: . print(«That awesome!») . >>> while True: . like_cheese() . Hi! I like cheese! Do you like cheese?yes That awesome! Hi! I like cheese!

Do you like cheese?yes That awesome!

Если вы действительно хотите перезапустить скрипт, который вы можете запустить скрипт снова, заменив текущий процесс на новый, выполнив следующие действия:

#! /bin/env python3 import os import sys def like_cheese(): var = input(«Hi! I like cheese! Do you like cheese?»).lower() if var == «yes»: print(«That awesome!») if __name__ == ‘__main__’: like_cheese() os.execv(__file__, sys.argv) # Run a new iteration of the current script, providing any command line args from the current iteration.

Это приведет к повторному запуску сценария, предоставив аргументы командной строки из текущей версии в новую версию.

Более подробное обсуждение этого метода можно найти в статье » Перезапуск скрипта Python внутри себя » Петра Земек.

Один из пунктов, который эта статья отмечает:

Если вы используете вышеупомянутое решение, помните, что функции exec*() немедленно заменяют текущий процесс, не очищая открытые файловые объекты. Поэтому, если у вас есть какие-либо открытые файлы во время перезапуска скрипта, вы должны очистить их с помощью f.flush() или os.fsync(fd) перед вызовом функции exec*() .

Источник: overcoder.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru