У меня есть такой код:
from os import access, F_OK
from os import listdir, chdir, getcwd
from os import mkdir
from os import environ
from os.path import isdir, isfile
from os.path import exists
import tarfile
import logging
import json
def main():
NAME_FILE_WITH_ARCHIVES = "archives"
NAME_FILE_WITH_SETTINGS = "settings.json"
logging.basicConfig(level=logging.INFO,
format="%(levelname)s: %(message)s")
settings = {
"paths" : [],
}
logging.info("Проверка существования файла с путями до файлов.")
if not exists(NAME_FILE_WITH_SETTINGS):
# Создание файла
logging.info("Файл не найден, попытка создать.")
try:
file = open(NAME_FILE_WITH_SETTINGS, "w")
except OSError:
logging.critical("Не получилось создать файл.")
exit(1)
file.write(json.dumps(settings,
ensure_ascii=False,
indent=2))
file.close()
logging.info("Файл успешно создан.")
else:
with open(NAME_FILE_WITH_SETTINGS, "r") as file:
settings = json.loads(file.read())
logging.info("Получение путей до файлов.")
paths = settings["paths"]
final_paths = list()
for path in paths:
final_paths.append(path.replace("~", environ["HOME"]))
logging.info("Проверка существования каталога для архивов.")
if not access(NAME_FILE_WITH_ARCHIVES, F_OK):
logging.info("Каталог не найден, попытка создать.")
mkdir(NAME_FILE_WITH_ARCHIVES)
logging.info("Каталог успешно создан")
if len(final_paths) == 0:
logging.warning("Не прописанны пути до файлов.")
exit(1)
logging.info("Проверка существования файлов по путям в настройках")
for path in final_paths:
if not exists(path):
logging.warning(f"Пути {path} несуществует, по этому " \
"данный путь добавлен в исключение")
logging.info("Архивация данных")
for path in final_paths:
old_path = getcwd()
logging.info(f"Выбранный путь для создания архифа: {path}")
# Проверка на то, путь является каталогом или файлом
if isdir(path):
files = listdir(path)
transformed_name = "archive" + path.replace("/", "_", -1) + ".tar.gz"
logging.info(f"Название архива: {transformed_name}")
with tarfile.open(f"{NAME_FILE_WITH_ARCHIVES}/{transformed_name}", "w:gz") as tar_file:
chdir(path)
for file in files:
logging.info(f"Архивация файла: {file}")
tar_file.add(file)
tar_file.close()
if isfile(path):
transformed_name = "archive" + path.replace("/", "_", -1) + ".tar.gz"
with tarfile.open(f"{NAME_FILE_WITH_ARCHIVES}/{transformed_name}", "w:gz") as tar_file:
tar_file.add(path)
tar_file.close()
chdir(old_path)
logging.info("Архивы созданны")
pass
if __name__ == "__main__":
main()
Какую критику можете дать по этому коду?
Что нужно переписать?
Что улучшить?
Этот код нужен чисто для практики новичку Python.