Как заставить скрипт сразу же перезапускаться, после выполнения программы?

Программа нужна для бекапа сохранений игры каждые 5 минут. Беру дату и время, записываю в переменную x, а позже в name. Создаю папку-шаблон и копирую в неё 3 файла сохранений, далее папку переименовываю в значение name и даю перерыв в 5 минут

НО!

Если зациклить выполнение функции, первый круг проходит отлично, на втором вылезает проблема -- папка-шаблон всё так же создаётся, но не переименовывается. И уже на 3 круге выходит ошибка, мол папка savprot уже существует

Ошибки не будет, если перезапускать скрипт ,а не циклить его. Но я не знаю как это сделать

import os
import time
from datetime import datetime
import shutil

x = datetime.now()



def backup():
    name = '{}.{}.{} _ {}.{}.{}'.format(x.day, x.month, x.year, x.hour, 
    x.minute, x.second)
    os.mkdir('C:\\WGsav\\savprot')
    shutil.copy2('C:\\ProgramData\\Orbit\\274\\RLD!\\Save001.sav', 'C:\\WGsav\\savprot')
    shutil.copy2('C:\\ProgramData\\Orbit\\274\\RLD!\\Save002.sav', 'C:\\WGsav\\savprot')
    shutil.copy2('C:\\ProgramData\\Orbit\\274\\RLD!\\saves.ini', 'C:\\WGsav\\savprot')
    os.rename('C:\\WGsav\\savprot', 'C:\\WGsav\\{}'.format(name))
    time.sleep(300)


backup()

С циклом:

import os
import time
from datetime import datetime
import shutil
import subprocess

x = datetime.now()



while 1:
    name = '{}.{}.{} _ {}.{}.{}'.format(x.day, x.month, x.year, x.hour, 
    x.minute, x.second)
    os.mkdir('C:\\WGsav\\savprot')
    shutil.copy2('C:\\ProgramData\\Orbit\\274\\RLD!\\Save001.sav', 'C:\\WGsav\\savprot')
    shutil.copy2('C:\\ProgramData\\Orbit\\274\\RLD!\\Save002.sav', 'C:\\WGsav\\savprot')
    shutil.copy2('C:\\ProgramData\\Orbit\\274\\RLD!\\saves.ini', 'C:\\WGsav\\savprot')
    os.rename('C:\\WGsav\\savprot', 'C:\\WGsav\\{}'.format(name))
    time.sleep(300)

Ответы (1 шт):

Автор решения: shinoxzu

Используйте модуль subprocess.

import subprocess

p = subprocess.Popen(['python3', 'code.py'], start_new_session=True)

Таким образом, по завершению программа будет заново запускать сама себя.

→ Ссылка