Задать вопрос
@ArtemMik
Python

Как переместить файл из одной папки в другую если выдаёт в консоль ошибку?

У меня есть код, который проверяет заблокирован ли аккаунт в группе телеграмма, если он заблокирован, то его нужно переместить в папку banned
В коде есть условие, если файл заблокирован то его надо переместить в папку, но у меня почему-то этот файл не видит

Код этой функции:
except Exception as e:
            logger.critical(f"ошибка аккаунта {phone}: {e}")
            banned_folder = 'banned'
            if not os.path.exists(banned_folder):
                os.makedirs(banned_folder)
            phone = account['phone']
            account_file = f"{phone}.session" 
            account_path = os.path.join(banned_folder, account_file)

            if os.path.exists(account_file):  # Проверка наличия файла перед перемещением
                shutil.move(account_file, account_path)
                logger.info(f"Аккаунт {phone} был перемещен в папку 'banned'")
            else:
                logger.error(f"Файл аккаунта {account_file} не существует, не могу переместить его в папку 'banned'")


Выдаёт ошибку - файла (название файла не существует) не могу переместить его в папку banned

Скрин структуры проекта:
6536dc8e88c42818722085.png
  • Вопрос задан
  • 112 просмотров
Подписаться 1 Простой 6 комментариев
Решения вопроса 1
@ArtemMik Автор вопроса
Python
В общем, как я решил проблему:
1. Я записал в переменную папку, где хранятся файлы session account_file = f"accounts"
2. Я записал в переменную имя файла + .session acc_path = f"{phone}.session"
3. Создаём переменную полного пути к этому файлу
source_file_path = os.path.join(account_file, acc_path)

4. Создаём полный путь папки, в которую мы хотим переместить файл
target_file_path = os.path.join(banned_folder, acc_path)

5. Отключаемся от сессии телеграмма, чтобы не было ошибки, что файл уже занят другим действиемawait client.disconnect()
6. Перемещаем файл в указанную нами папку shutil.move(source_file_path, target_file_path)

Код:
banned_folder = 'banned'
            if not os.path.exists(banned_folder):
                os.makedirs(banned_folder)
            account_file = f"accounts"
            acc_path = f"{phone}.session" 
            source_file_path = os.path.join(account_file, acc_path)
            target_file_path = os.path.join(banned_folder, acc_path)
            await client.disconnect()
            shutil.move(source_file_path, target_file_path)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы