Проверьте, работает ли скрипт на Python - PullRequest
0 голосов
/ 05 октября 2018

У меня есть скрипт Python с именем update.py, и я хочу использовать другой скрипт Python, чтобы проверить, запущен скрипт или нет.Если update.py не запускается или выдает ошибку, тогда скрипт запустит update.py.

Могу ли я это сделать?Если есть пример, он будет очень благодарен.

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Не уверен насчет того, что вы спрашиваете, но с учетом того, что это может помочь, поэтому, если вы просто хотите вызвать один скрипт python из другого, вы можете использовать скрипт 1

 #!/usr/bin/python 
 from subprocess import call
 call(["python", "update.py"])

Сохранить этот файл в скриптес именем script1 и запустите его, он скомпилирует update.py.Если вы хотите проверить наличие синтаксической ошибки в update.py, вы можете использовать скрипт 2

#!/usr/bin/python
from subprocess import call
call(["python","-m","py_compile", "update.py"])

Если script2 компилируется без ошибок, это показывает, что в вашей программе нет синтаксической ошибки.

В-третьих, если вы хотите проверить, запущен ли в настоящий момент файл update.py или нет, вы можете использовать скрипт 3

#!/usr/bin/python
import psutil
import sys
from subprocess import Popen

for process in psutil.process_iter():
    if process.cmdline() == ['python', 'update.py']:
         sys.exit('Process found: exiting.')

print('Process not found: starting it.')
Popen(['python', 'update.py'])

Этот последний скрипт скажет, работает ваш скрипт или нет, и не запущен ли онэто скомпилирует.

0 голосов
/ 05 октября 2018

Скрипты обычно используются для таких задач.У вас есть скрипт монитора, который отслеживает update.py, который работает в фоновом режиме.Это становится проще, если скрипт монитора запускает скрипт python в начале.

#!/bin/bash
# Monitor script. 

EXEC=<path>/update.py

while true; do
    "$EXEC" &
    wait # Here the assumption is that you want to run this forever. 
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...