Через время закрывается программа, выполняется бесконечный цикл
Программа в бесконечном цикле проверят соответствует ли текущее время указанной в документе .csv, если да то выполняется команда открытия ссылки. Точно так же если наступило время завершения что указанно в документе .csv, то браузер закрывается. Я собрал через pyinstaller .exe программу, она работает около часа и после закрывается. Прошу помогите понять, что может быть причиной. Тут ссылка на nama.csv
def CSV_time():#Из CSV файла переменные получают время
while True:
day = datetime.datetime.today().strftime("%d.%m.%Y") # Получает текущую дату, месяц и год
with open("nama.csv", newline='') as csvfile:
reader = csv.DictReader(csvfile, delimiter=";")
for row in reader:
if row['data'] == day: # Если в списке есть такая дата
time_namaz1 = row['time1_off']
time_namaz2 = row['time2_off']
time_namaz3 = row['time3_off']
time_namaz4 = row['time4_off']
time_radio1 = row['time1_on']
time_radio2 = row['time2_on']
time_radio3 = row['time3_on']
time_radio4 = row['time4_on']
TIME_on = row['time_on']
TIME_off = row['time_off']
while True:
TIME = datetime.datetime.today().strftime("%H:%M:%S")
if TIME == TIME_on: # on
if not "msedge.exe" in (p.name() for p in psutil.process_iter()):
webbrowser.open('https://www.govoritmaykop.ru', new=0)
time.sleep(1)
if TIME == time_namaz1: # off
os.system('taskkill /IM msedge.exe /F')
time.sleep(1)
if TIME == time_radio1: # on
if not "msedge.exe" in (p.name() for p in psutil.process_iter()):
webbrowser.open('https://www.govoritmaykop.ru', new=0)
time.sleep(1)
if TIME == time_namaz2: # off
os.system('taskkill /IM msedge.exe /F')
time.sleep(1)
if TIME == time_radio2: # on
if not "msedge.exe" in (p.name() for p in psutil.process_iter()):
webbrowser.open('https://www.govoritmaykop.ru', new=0)
time.sleep(1)
if TIME == time_namaz3: # off
os.system('taskkill /IM msedge.exe /F')
time.sleep(1)
if TIME == time_radio3: # on
if not "msedge.exe" in (p.name() for p in psutil.process_iter()):
webbrowser.open('https://www.govoritmaykop.ru', new=0)
time.sleep(1)
if TIME == time_namaz4: # off
os.system('taskkill /IM msedge.exe /F')
time.sleep(1)
if TIME == time_radio4: # on
if not "msedge.exe" in (p.name() for p in psutil.process_iter()):
webbrowser.open('https://www.govoritmaykop.ru', new=0)
time.sleep(1)
if TIME > TIME_on and TIME < time_namaz1:
if not "msedge.exe" in (p.name() for p in psutil.process_iter()):
webbrowser.open('https://www.govoritmaykop.ru', new=0)
if TIME == TIME_off or TIME > TIME_off:
if "msedge.exe" in (p.name() for p in psutil.process_iter()):
os.system('taskkill /IM msedge.exe /F')
if TIME < TIME_on:
if "msedge.exe" in (p.name() for p in psutil.process_iter()):
os.system('taskkill /IM msedge.exe /F')
else:
break # Выход из цикла для обновления даты
Ответы (1 шт):
Ошибку вызывал PID программы msedge.exe:
psutil.NoSuchProcess: process no longer exists (pid=ххххх)
Нашел тему с подобной ошибкой, что очень помогло. 63 и 66-ю строку заменил на упакованную функцию
def TRACK_ON_AND_OFF():
try:
if "msedge.exe" in (p.name() for p in psutil.process_iter()):
os.system('taskkill /IM msedge.exe /F')
else:
pass
except psutil.NoSuchProcess:
pass
PS Новичкам, чтобы найти ошибку самозавершения можно просто запустив скрипт через CMD или любой другой интерпретатор(вот только pycharm не давал ошибок, там все работало как часы).