Как я могу выполнить и завершить другой скрипт Python в текущем скрипте Python

#python #python-2.7 #raspberry-pi #subprocess

#python #python-2.7 #raspberry-pi #подпроцесс

Вопрос:

Я пишу код на python, который считывает статус (то есть «включено») из текстового файла, а затем выполняет скрипт python (a.py ) и если он считывает ‘off’ из текстового файла,

Я хочу завершить a.py и запустить другой скрипт b.py .

пока я могу запускать a.py когда статус «включен», но невозможно закрыть этот скрипт, когда статус «выключен».

Где я ошибаюсь?

Я использую библиотеку подпроцессов в Raspberry pi.

 import subprocess as sp

while True:

        file = open("status.txt", "r")#open txt file
        status = file.read()#read the status of file
        print(status)#print the status
        time.sleep(2)


        if status =='on':                              
           extProc =  sp.Popen(['python','a.py'])

        elif status == off:
            print("stop")
            sp.Popen.terminate(sp.Popen(['python','a.py']))
  

Комментарии:

1. Похоже, что скрипт вообще не выполняет ваш блок else, укажите другое возможное условие с помощью elif

Ответ №1:

Вы можете попробовать это:

 import subprocess as sp
import time

procA = None
procB = None
while True:

    file = open("status.txt", "r")  # open txt file
    status = file.read()            # read the status of file
    file.close()
    print(status)                   # print the status
    time.sleep(2)

    if status == 'on':
        if procB:
            procB.terminate()
            procB = None

        if not procA:
            procA = sp.Popen(['python', 'a.py'])

    else:
        if procA:
            procA.terminate()
            procA = None

        if not procB:
            procB = sp.Popen(['python', 'b.py'])