Проблема с задачкой из книги a byte of python

IamDenis

Новичок
Пользователь
Дек 12, 2021
4
0
1
Всем привет! Дочитал в книге "A byte of python" до пункта с задачками, первая задачка - Составить программу, которая создаёт резервные копии всех наших важных файлов. Короче она у меня вообще никак не хочет работать.


Python:
import os
import time
# 1. Файлы и каталоги, которые необходимо скопировать, собираются в список.
source = ['"C:\\My Documents"', 'C:\\Code']
# Заметьте, что для имён, содержащих пробелы, необходимо использовать
# двойные кавычки внутри строки.
# 2. Резервные копии должны храниться в основном каталоге резерва.
target_dir = 'E:\\Backup' # Подставьте ваш путь.
# 3. Файлы помещаются в zip-архив.
# 4. Именем для zip-архива служит текущая дата и время.
target = target_dir + os.sep + time.strftime('%Y%m%d%H%M%S') + '.zip'
# 5. Используем команду "zip" для помещения файлов в zip-архив
zip_command = "zip -qr {0} {1}".format(target, ' '.join(source))
# Запускаем создание резервной копии
if os.system(zip_command) == 0:
     print('Резервная копия успешно создана в', target)
else:
     print('Создание резервной копии НЕ УДАЛОСЬ')


Погуглил немного и нашел решение, которое кому - то помогло
"скачивайте 7z, и передаете полный путь до него"
Python:
zip_command = "\"C:\\Program Files\\7-Zip\\7z.exe\" a -tzip -ssw -mx1 -r0 {0} {1}".format(target, ' '.join(source))
7z у меня и так уже был установлен, в коде путь прописан, но это ничего не решила и ошибка осталась. Помогите пожалуйста, что не так?

C:\Users\Denis\Desktop\python\venv\Scripts\python.exe C:/Users/Denis/Desktop/python/backup_ver1.py
Создание резервной копии НЕ УДАЛОСЬ
"zip" �� ���� ����७��� ��� ���譥�
��������, �ᯮ��塞�� �ணࠬ��� ��� ������ 䠩���.

Process finished with exit code 0
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 677
479
83
скорее всего в кракозябрах написано что "zip" не является внутренней или внешней командой, исполняемой программой или пакетным файлом
вам нужно установить zip или другой архиватор, добавить его в path или писать полный путь до экзешника

вот так у меня работает
Python:
import os
import time

# 1. Файлы и каталоги, которые необходимо скопировать, собираются в список.
# source = ['"C:\\My Documents"', 'C:\\Code']
source = ["d:\\asd"]
# Заметьте, что для имён, содержащих пробелы, необходимо использовать
# двойные кавычки внутри строки.
# 2. Резервные копии должны храниться в основном каталоге резерва.
target_dir = 'd:\\Backup'  # Подставьте ваш путь.
# 3. Файлы помещаются в zip-архив.
# 4. Именем для zip-архива служит текущая дата и время.
target = target_dir + os.sep + time.strftime('%Y%m%d%H%M%S') + '.zip'
# 5. Используем команду "zip" для помещения файлов в zip-архив
zip_command = "\"C:\\Program Files\\7-Zip\\7z.exe\" a -tzip -ssw -mx1 -r0 {0} {1}".format(target, ' '.join(source))
# Запускаем создание резервной копии
error = os.system(zip_command)
if error == 0:
    print('Резервная копия успешно создана в', target)
else:
    print('Создание резервной копии НЕ УДАЛОСЬ')
    print(error)
 

IamDenis

Новичок
Пользователь
Дек 12, 2021
4
0
1
скорее всего в кракозябрах написано что "zip" не является внутренней или внешней командой, исполняемой программой или пакетным файлом
вам нужно установить zip или другой архиватор, добавить его в path или писать полный путь до экзешника

вот так у меня работает
Python:
import os
import time

# 1. Файлы и каталоги, которые необходимо скопировать, собираются в список.
# source = ['"C:\\My Documents"', 'C:\\Code']
source = ["d:\\asd"]
# Заметьте, что для имён, содержащих пробелы, необходимо использовать
# двойные кавычки внутри строки.
# 2. Резервные копии должны храниться в основном каталоге резерва.
target_dir = 'd:\\Backup'  # Подставьте ваш путь.
# 3. Файлы помещаются в zip-архив.
# 4. Именем для zip-архива служит текущая дата и время.
target = target_dir + os.sep + time.strftime('%Y%m%d%H%M%S') + '.zip'
# 5. Используем команду "zip" для помещения файлов в zip-архив
zip_command = "\"C:\\Program Files\\7-Zip\\7z.exe\" a -tzip -ssw -mx1 -r0 {0} {1}".format(target, ' '.join(source))
# Запускаем создание резервной копии
error = os.system(zip_command)
if error == 0:
    print('Резервная копия успешно создана в', target)
else:
    print('Создание резервной копии НЕ УДАЛОСЬ')
    print(error)
7zip у меня уже был установлен.

Уже пошли сподвижки.
Сначала у меня появлялись две ошибки (WARNING),
C:\Documents и C:\Code
WARNING: �� 㤠���� ���� 㪠����� 䠩�.
C:\Documents
заменил последний путь на C:\Games (существующая папка на диске C), осталась папка Мои документы, я путь указывал и так тоже

Код:
source = ['"C:\\My Documents"', 'C:\\Games']
не сработало, ну, думаю наверное это не критично, в целом все работает, я нажимал кнопку "Debug" появлялась надпись

Scanning the drive:

WARNING: �� 㤠���� ���� 㪠����� 䠩�.
C:\Documents
сканирование проходило наверное минуты 3, я даже подумал, что код не работал, мол зависал на этом моменте, но нет, дождался и все закончилось, может это из-за папки Мои документы, может из-за того, что папка Games весит 3 GB. :D
Единственное, наверное, что хотелось спросить: Можно ли как - то избавиться от этих знаков вопросов и иероглифов? А то не понятно, что за ошибку там пишут.
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 677
479
83
Можно ли как - то избавиться от этих знаков вопросов и иероглифов? А то не понятно, что за ошибку там пишут.
в консоли запускать
 

Форум IT Специалистов