Нужно сделать так, чтобы функция выполнялась только один раз при первом запуске
Делаю скрипт, в котором одна из функций создает папки на компьютере.
Мне нужно сделать так, чтобы это функция выполнялась только один раз при первом запуске программы, а при дальнейших запусках нет. Каким образом это можно сделать?
Функция
def create_dirs(folder_sort):
for i in dirs:
try:
os.mkdir(folder_sort + i)
except OSError:
k = input(f'Directory {i} already exists, do you want to recreate it?\nAnswer y/n: ')
if k == 'y':
shutil.rmtree(folder_sort + i)
os.mkdir(folder_sort + i)
elif k == 'n':
pass
else:
pass
Ответы (2 шт):
Автор решения: Стас
→ Ссылка
Можно взять пустой файл и при каждом запуске программы записывать (или перезаписывать) в файл какое - либо значение, и также проверять на то, является ли файл пустым.
def func():
f = open('result.ini', 'w') # и в функции записывать в файл значение
b = f.write("The function was completed")
f.close()
print("123")
f = open('result.ini', 'r') #при каждом запуске читаются данные
a = f.read()
f.close()
if a == "": #если файл пустой - выполнить функцию
func()
И при следующем запуске файл не будет пустым и функция не вызовется.
Или как сказал Alexandr Kiselev ловить FileExistsError:
try:
os.mkdir(folder_sort + i)
except FileExistsError:
break
Автор решения: Pavel Durmanov
→ Ссылка
In [5]: import os
In [6]: def to_create(prefix, dirs):
...: new_dirs = []
...: for dir_ in dirs:
...: if not os.isdir(prefix + dir_):
...: new_dirs.append(dir_)
...: return new_dirs
...:
In [7]: def create_dirs(folder_sort):
...: for i in to_create(folder_sort, dirs):
...: os.mkdir(folder_sort + i)
Находим все директории которые еще не существуют и создаем их. Если все директории уже существуют - ничего не делаем.