Не работает программа для архивации данных(работа из пример в книге)
Дошел в книге до решения задач, первая программа для примера, это программа архивации данных, ввел в точности как в книге, только пути каталогов изменил, не вышло. Ниже привел код программы, над строками где есть комментарии я разобрался что происходит, там где комментарии заканчиваются, я уже не смог разобраться, гугл не помог. При запуске данного кода, никакого архива не создается, даже ошибки нет в командной строке, просто программа прекращает работу сразу после её запуска.
import os
import time
#Откуда копируем
source = ['"D:\Miscellanea\Резервные копии"']
#Куда копируем
target_dir = '"D:\Miscellanea\Programmig\Programming-Python\Python\Project\Backup programm\Backup archive"'
#Название сохраненого архима резервных данных, в формате:
#путь к резервным данным + // + %Год%Месяц%День%Час%Минута%Секундна + формат файла (.zip)
target = target_dir + os.sep + time.strftime('%Y%m%d%H%M%S') + '.zip'
zip_command = "zip -qr {0} {1}".format(target, ' '.join(source))
if os.system(zip_command) == 0:
print('Архив резервных копий создан в', target)
else:
print('Создание резервной копии НЕ УДАЛАСЬ')
Python v3.8.1, Windows 7(64) Максимальная
Так же в книге говорят о необходимости установить gnuwin32 и прописать путь в переменную Patch по аналогии того, как прописывали сам питон при установке, так же все прописал, скрин ниже
Так же переменная Patch, полное значение переменной: D:\Miscellanea\Programmig\Programming-Python\Python\Scripts\;D:\Miscellanea\Programmig\Programming-Python\Python\;D:\Miscellanea\programmig\Programming Python\Python\Scripts\;D:\Miscellanea\programmig\Programming Python\Python\;D:\Miscellanea\programmig\Python\Python\Scripts\;D:\Miscellanea\programmig\Python\Python\;%PyCharm Community Edition%;D:\Miscellanea\Programmig\Programming-Python\Python\Project\Backup programm;D:\Program\GnuWin32\bin
Ответы (2 шт):
я думаю, что дело в не верном пути:
source = ['"D:\\Miscellanea\\Резервные копии"']
Путь должен быть типа:
#Пример пути в линукс:
source = ["/Users/reivanstr/Library/Fonts"] # используй только одни ковычки
#Пример пути в виндоус
source = ["С:\Users\reivanstr\Library\Fonts"] # отличие в разделительных знаках
смею предположить что книга называется AByteofPython. Тогда
Внимательно читаем что там пишут
Заметьте, что для имён, содержащих пробелы, необходимо использовать двойные кавычки внутри строки
У вас как раз путь куда копирую содержит пробел. Надо заменить на
target_dir = ['"D:\\Miscellanea\\Резервные копии\\Backup archive"']Дальше будет ошибка в строчке
target = target_dir + os.sep + time.strftime('%Y%m%d%H%M%S') + '.zip'А именно
can only concatenate list (not "str") to listТ.к. вы складываете строки с листом в котором храните путь куда будите копировать. Поэтому надо либо убрать лист и оставитьtarget_dir = '"D:\\Miscellanea\\Резервные копии\\Backup archive"'либо указать элемент листа
target = target_dir[0] + os.sep + time.strftime('%Y%m%d%H%M%S') + '.zip'
