Как остановить выполнение программы в python в командной строке

У меня есть скрипт Python, который загружает / выгружает файлы на / с FTP-сервера в фоновом режиме.

run = 1 while run == 1: get_from_ftp(server, login, password)

Я хочу запустить и остановить мой скрипт на Python с помощью командной строки

myprogram.py start и myprogram.py stop

Идея заключается в следующем, когда я запускаю команду myprogram.py stop переменная run должна получить значение 0, а цикл ( while ) должен загрузить / загрузить последний файл и остановиться.

Пожалуйста, предложите, как я могу это понять.

Пожалуйста, не предлагайте использовать kill, ps и ctrl + c

Pavel Mihaylyan 5 Окт 2018 в 15:11

3 ответа

Лучший ответ

Поскольку вы хотите иметь возможность управлять через командную строку, один из способов сделать это — использовать временный файл «flag», который будет создан myprogram.py start и удален myprogram.py stop . Ключ в том, что, пока файл существует, myprogram.py продолжит выполнение цикла.

import os import sys import time FLAGFILENAME = ‘startstop.file’ def set_file_flag(startorstop): # In this case I am using a simple file, but the flag could be # anything else: an entry in a database, a specific time. if startorstop: with open(FLAGFILENAME, «w») as f: f.write(‘run’) else: if os.path.isfile(FLAGFILENAME): os.unlink(FLAGFILENAME) def is_flag_set(): return os.path.isfile(FLAGFILENAME) def get_from_ftp(server, login, password): print(«Still running. «) time.sleep(1) def main(): if len(sys.argv) < 2: print «Usage: start|stop» sys.exit() start_stop = sys.argv[1] if start_stop == ‘start’: print «Starting» set_file_flag(True) if start_stop == ‘stop’: print «Stopping» set_file_flag(False) server, login, password = ‘a’, ‘b’, ‘c’ while is_flag_set(): get_from_ftp(server, login, password) print «Stopped» if __name__ == ‘__main__’: main()

Читайте также:
Что делают в артеке программа

Как вы можете себе представить, флаг может быть чем-то еще. Это очень просто, и если вы хотите, чтобы было запущено более двух экземпляров, вы должны как минимум по-разному называть файлы для каждого экземпляра (например, с параметром CLI), чтобы вы могли выборочно остановить каждый экземпляр.

КОМАНДНАЯ СТРОКА ЧЕРЕЗ PYTHON | OS

sal 5 Окт 2018 в 18:29

while True: run= int(input(«press 1 to run/ 0 to stop: «)) if run == 1: get_from_ftp(server, login, password) elif run ==0: # what you want to do

Если я понимаю ваш вопрос, может быть что-то подобное

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

Как завершить python скрипт в консоли командой?

ubuntu

  • Ubuntu
  • +2 ещё

Как решить ошибку загрузки информационной базы. В информационную базу загружены не все данные?

  • 1 подписчик
  • час назад
  • 24 просмотра

python

Уроки Python Как сделать задержку времени

  • Python
  • +1 ещё

Как вернуть значения из синхронного колбека в corotine несколько раз?

  • 2 подписчика
  • час назад
  • 42 просмотра

python

  • Python
  • +1 ещё

Использую opentele для конвертации tdata в telethon.session. На tdesk.ToTelethon зависает, что делать?

  • 1 подписчик
  • вчера
  • 45 просмотров

python

  • Python
  • +2 ещё

Почему метод Storage.set(vk_api) возвращает None?

  • 1 подписчик
  • вчера
  • 48 просмотров

python

  • Python

Как мне исправить ошибку KeyError: 18?

  • 1 подписчик
  • вчера
  • 91 просмотр

python

  • Python
  • +1 ещё

Можно объединить юзер бота с обычным?

  • нет подписчиков
  • вчера
  • 68 просмотров

python

  • Python

Получение ошибки при запросе на биржу?

  • 1 подписчик
  • вчера
  • 62 просмотра

python

  • Python

Как исправить ошибку cannot perform operation: another operation is in progress?

  • 1 подписчик
  • 08 июл.
  • 96 просмотров

python

  • Python

Как сделать так чтобы в конце кода когда человек нажимал Y код запускался заново?

  • 1 подписчик
  • 08 июл.
  • 86 просмотров

python

  • Python

Почему ModuleNotFoundError: No module named ‘app’?

  • 1 подписчик
  • 08 июл.
  • 46 просмотров

от 2 000 до 2 500 $

от 110 000 до 350 000 ₽

Greenway • Новосибирск

от 150 000 до 200 000 ₽

10 июл. 2023, в 16:55

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

500 руб./в час

10 июл. 2023, в 16:45

5000 руб./за проект

10 июл. 2023, в 16:42

1000 руб./за проект

Минуточку внимания

Присоединяйтесь к сообществу, чтобы узнавать новое и делиться знаниями

  • Как работать с числами разных типов в формах?
  • 2 подписчика
  • 0 ответов
  • 2 подписчика
  • 1 ответ
  • 2 подписчика
  • 2 ответа
  • 5 подписчиков
  • 0 ответов
  • 2 подписчика
  • 6 ответов
  • 2 подписчика
  • 0 ответов
  • 2 подписчика
  • 5 ответов
  • 2 подписчика
  • 5 ответов
  • 2 подписчика
  • 0 ответов
  • 2 подписчика
  • 4 ответа

Источник: qna.habr.com

Как остановить скрипт Python с помощью командной строки

У меня есть скрипт python, который загружает / выгружает файлы на / с FTP-сервера в фоновом режиме.

run = 1 while run == 1: get_from_ftp(server, login, password)

Я хочу запустить и остановить свой скрипт python с помощью командной строки

myprogram.py start и myprogram.py stop

Идея заключается в следующем: когда я запускаю команду myprogram.py stop , переменная run должна получить значение 0, а цикл ( while ) должен загрузить / загрузить последний файл и остановиться.

Подскажите, пожалуйста, как мне это реализовать.

Пожалуйста, не предлагайте использовать kill, ps и ctrl + c

Комментарии (3)

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

Вы можете генерировать сигналы из программы Python, и они не обязательно должны быть SIGKILL, а должны быть чем-то вроде SIGINT (Ctrl + C), которые могут быть захвачены для аккуратного закрытия. PID может быть записан в файл оригиналом, чтобы избежать использования ps . Я не понимаю, почему вы не хотите использовать kill .

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

05.10.2018 14:11

Оператор pass в Python — это простая концепция, которую могут быстро освоить даже новички без опыта программирования.

Python — самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science.

Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это

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

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

Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

while True: run= int(input(«press 1 to run/ 0 to stop: «)) if run == 1: get_from_ftp(server, login, password) elif run ==0: # what you want to do

Если я понимаю, ваш вопрос может быть примерно таким

05.10.2018 14:14

Вы можете использовать ниже —

import sys import os text_file = open(‘Output.txt’, ‘w’) text_file.write(sys.argv[1]) text_file.close() if sys.argv[1] == «stop»: sys.exit(0) run = 1 while run == 1: # Your code fw = open(‘Output.txt’, ‘r’) linesw = fw.read().replace(‘n’, ») fw.close() if linesw == «stop»: os.remove(‘Output.txt’) break sys.exit(0)

Я использую Python 3.7.0. Запускаем как python myprogram.py start и python myprogram.py stop .

05.10.2018 16:26
Ответ принят как подходящий

Поскольку вы хотите иметь возможность управлять через командную строку, один из способов сделать это — использовать временный файл «флагов», который будет создан myprogram.py start и удален myprogram.py stop . Ключ в том, что пока файл существует, myprogram.py будет продолжать выполнение цикла.

import os import sys import time FLAGFILENAME = ‘startstop.file’ def set_file_flag(startorstop): # In this case I am using a simple file, but the flag could be # anything else: an entry in a database, a specific time. if startorstop: with open(FLAGFILENAME, «w») as f: f.write(‘run’) else: if os.path.isfile(FLAGFILENAME): os.unlink(FLAGFILENAME) def is_flag_set(): return os.path.isfile(FLAGFILENAME) def get_from_ftp(server, login, password): print(«Still running. «) time.sleep(1) def main(): if len(sys.argv) < 2: print «Usage: start|stop» sys.exit() start_stop = sys.argv[1] if start_stop == ‘start’: print «Starting» set_file_flag(True) if start_stop == ‘stop’: print «Stopping» set_file_flag(False) server, login, password = ‘a’, ‘b’, ‘c’ while is_flag_set(): get_from_ftp(server, login, password) print «Stopped» if __name__ == ‘__main__’: main()

Как вы понимаете, флаг может быть чем угодно. Это очень просто, и если вы хотите, чтобы запущено более двух экземпляров, вы должны, по крайней мере, называть файлы по-разному для каждого экземпляра (например, с помощью параметра CLI), чтобы вы могли выборочно останавливать каждый экземпляр.

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

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