@Pyhon3x

BadZipfile: File is not a zip file НО ведь это zip файл, почему?

Привет!
У меня есть такой скрипт:
import zipfile
import requests
import coloredlogs, logging
import configparser
import os
import colorama
from colorama import Fore, Back, Style
colorama.init(autoreset=True)
config = configparser.ConfigParser()
config.read(os.path.join(os.path.dirname(__file__), "settings.ini"))

server_name = config["Loader"]["server_name"]
print(f'{Fore.GREEN} Имя сервиса: {server_name}')
if config["Loader"]["install"] == 'True':
    print(f'{Fore.GREEN} Начата установка')
    license = config["Loader"]["license_code"]
    print(f'{Fore.GREEN} Код лицензии: {license}')
    response = requests.get(
        config["Loader"]["URLs.path_to_verify_license_code"],
        params={
            'code': license
        }
    )

    if response.json()['ok'] is True:
        file_response = requests.get(
            config["Loader"]["URLs.path_to_download_code"]
        )
        print(f'{Fore.GREEN} Начато скачивание файлов')

        file_open = open(os.path.abspath("LT.zip"), 'wb')
        file_open.write(file_response.content)
        print(f'{Fore.GREEN} Завершено скачивание файлов')

        print(f'{Fore.GREEN} Распаковка архива')
        fantasy_zip = zipfile.ZipFile(os.path.abspath("LT.zip")) # <-- Здесь ошибка
        fantasy_zip.extractall(os.getcwd())
        fantasy_zip.close()
        print(f'{Fore.GREEN} Архив распакован')


        os.remove(os.path.abspath("LT.zip"))
        print(f'{Fore.GREEN} Архив удален')

        os.system(f'cd {os.getcwd()}')
        os.system('pip install -r requirements.txt')

        if config["Loader"]["updated"] == 'True':
            print(f'{Fore.GREEN} Обновлено!')
            print(f'{Fore.YELLOW} Перезапустите этот скрипт')
        else:
            print(f'{Fore.GREEN} Параметер install установлен на False')
            print(f'{Fore.YELLOW} Перезапустите этот скрипт')

        config.set('Loader', 'install', 'False')
        config.set('Loader', 'updated', 'False')
        with open(os.path.join(os.path.dirname(__file__), "settings.ini"), 'w') as configfile:
            config.write(configfile)
    else:
        print(f'{Fore.RED} Лицензия не правильная!')
else:
    response = requests.get(
        config["Loader"]["URLs.path_to_get_version"],
    )

    json = response.json()
    if json['version'] != config['Loader']['version']:
        print(f'{Fore.YELLOW} Есть обновление, перезапустите скрипт')
        config.set('Loader', 'install', 'True')
        config.set('Loader', 'updated', 'True')
        config.set('Loader', 'version', json['version'])
        with open(os.path.join(os.path.dirname(__file__), "settings.ini"), 'w') as configfile:
            config.write(configfile)
    else:
        os.system(f'cd {os.getcwd()}')
        os.system('python main.py')

Это работает прекрасно на Manjaro Linux, python 3.9.1
НО когда я пытаюсь это запустить на Windows 7, python 3.8.8 - я получаю ошибку BadZipfile: File is not a zip file
Почему, как исправить?
Спасибо!
  • Вопрос задан
  • 2535 просмотров
Решения вопроса 1
SagePtr
@SagePtr
Еда - это святое
Вы одновременно и открываете этот файл на запись, и не закрывая его, открываете на чтение.
После записи файл нужно обязательно закрыть, и только после этого на чтение открывать.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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