Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 08.01.2023
Сообщений: 10

И снова "Программа, которая создаёт резервные копии"

08.01.2023, 17:12. Показов 1785. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток, я очередной чтец книги "Укус питона", и тоже не могу понять в чем проблема с задачкой "Программа, которая создаёт резервные копии", на форуме перешерстил все и не у кого нет такой проблемы как у меня:

Zip установил и добавил его в PATH
При запуске программы появляется запрос "Введите комментарий", создается внутри папки, в которую резервирую, папка с датой, а вот сам файл не резервируется и вылазит ошибка.
Заранее благодарен за ответы!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.01.2023, 17:12
Ответы с готовыми решениями:

Программа, которая создаёт резервные копии
OS: Windows Читаю книгу «Укус Питона» Фрагмент книги: Перед нами стоит следующая задача: Составить программу, которая...

Составить программу, которая создаёт резервные копии всех наших важных файлов
import os import time import zipfile # 1. Файлы и каталоги, которые необходимо скопировать, собираются в список. source = #...

Программа, которая создаёт резервные копии файлов
Учу "Укус питона" и там есть пример программы, которая у меня не работает import os import time # 1. Файлы и каталоги, которые...

21
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
08.01.2023, 17:55
Asphexia, никогда не выкладывай код скриншотами, это неуважение к участникам форума. Используй теги языка программирования. Я знаю, где у тебя ошибка, причем глупая. Выкладывай код и ошибку текстом, в тегах, тогда скажу.
2
0 / 0 / 0
Регистрация: 08.01.2023
Сообщений: 10
08.01.2023, 18:27  [ТС]
u235 , прошу прощение за мою некомпетентность в поведении на форуме, обещаю исправиться!)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import os
import time
 
what_to_reserve = ['"D:\\Program files\\zlib1"']
 
where_to_save = 'C:\\Users\\PC-2\\Desktop\\резерв python'
 
today = where_to_save + os.sep + time.strftime ('%Y%m%d')
now = time.strftime('%H%M%S')
 
comment=input('Введите комментарий: ')
if len(comment)==0:
    target = today + os.sep + now + '.zip'
else:
    target=today + os.sep + now + '_' + \
            comment.replace(' ','_') + '.zip'
 
if not os.path.exists(today):
    os.mkdir(today)
    print('Каталог успешно создан', today)
zip_command="zip-qr {0} {1}".format(target, ' '.join(what_to_reserve))
if os.system(zip_command)==0:
    print("Резервная копия успешно создана в ", target)
else:
    print("Ошибка!")

Python
1
2
3
Введите комментарий: dfsd
zip-qr C:\Users\PC-2\Desktop\резерв python\20230108\182605_dfsd.zip "D:\Program files\zlib1"
Ошибка!

Заранее благодарен!
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.01.2023, 19:01
Цитата Сообщение от Asphexia Посмотреть сообщение
what_to_reserve = ['"D:\\Program files\\zlib1"']
Что-то мне не нравятся лишние кавычки...

Добавлено через 1 минуту
Цитата Сообщение от Asphexia Посмотреть сообщение
резерв python
и пробел вот тут очень не нравится
0
0 / 0 / 0
Регистрация: 08.01.2023
Сообщений: 10
08.01.2023, 19:16  [ТС]
iSmokeJC, уже который раз проверяю, все как в примере:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import os
import time
what_to_reserve = ['"C:\\Users\\forvi\\Documents\\Study"', '"C:\\Users\\forvi\\Documents\\Photo"']
where_to_save = 'D:\\Backup'
today = where_to_save + os.sep + time.strftime('%Y%m%d')
now = time.strftime('%H%M%S')
comment = input('Введите комментарий: ')
if len(comment) == 0:
    target = today + os.sep + now + '.zip'
else:
    target = today + os.sep + now + '_' + comment.replace(' ', '_') + '.zip'
if not os.path.exists(today):
    os.mkdir(today)
print('Каталог успешно создан', today)
zip_command = "zip -qr {0} {1}".format(target, ' '.join(what_to_reserve))
if os.system(zip_command) == 0:
    print("Резервная копия успешно создана в", target)
else:
    print("Ошибка!")
Пробел сейчас пробовал заменить на нижний дефис, результат не поменялся
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.01.2023, 19:28
Выполни эту команду просто в терминале и посмотри что он тебе скажет
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
08.01.2023, 20:21
Asphexia, а так?
Python
1
zip_command = 'zip -qr "{0}" "{1}"'.format(target, ' '.join(what_to_reserve))
или
Python
1
zip_command = 'zip -qr "{0}"  {1}'.format(target, ' '.join(what_to_reserve))
0
0 / 0 / 0
Регистрация: 08.01.2023
Сообщений: 10
08.01.2023, 20:34  [ТС]
iSmokeJC, вбил в терминал код, указывает на синтаксическую ошибку в первой строке

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
>>> import os
import time
 
what_to_reserve = ['"D:\\Program files\\zlib1"']
 
where_to_save = 'C:\\Users\\PC-2\\Desktop\\резерв python'
 
today = where_to_save + os.sep + time.strftime ('%Y%m%d')
now = time.strftime('%H%M%S')
 
comment=input('Введите комментарий: ')
if len(comment)==0:
    target = today + os.sep + now + '.zip'
else:
    target=today + os.sep + now + '_' + comment.replace(' ','_') + '.zip'
 
if not os.path.exists(today):
    os.mkdir(today)
    print('Каталог успешно создан', today)
zip_command='zip-qr {0} {1}'.format(target, ' '.join(what_to_reserve))
print(zip_command)
if os.system(zip_command)==0:
    print("Резервная копия успешно создана в ", target)
else:
    print("Ошибка!")
    
SyntaxError: multiple statements found while compiling a single statement
>>>
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.01.2023, 20:40
Да не в питоновский терминал, а в cmd

Добавлено через 49 секунд
Цитата Сообщение от Asphexia Посмотреть сообщение
print(zip_command)
Вывод вот этой строки скопируй, зайди в cmd и вставь/выполни
0
0 / 0 / 0
Регистрация: 08.01.2023
Сообщений: 10
08.01.2023, 20:47  [ТС]
iSmokeJC, вот:

Code
1
2
3
4
>>> print(zip_command)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'zip_command' is not defined
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.01.2023, 20:49
Тьфу ты, ёлки-палки.
Ты прогу свою запусти!
Цитата Сообщение от Asphexia Посмотреть сообщение
print(zip_command)
Вот эта строка перед ошибкой выведет тебе собранную команду. Вот ее скопируй и вставь в cmd!!!
Что-то типа
Bash
1
zip -qr D:\Backup\20230108\204124_xzzz.zip C:\Users\forvi\Documents\Study
0
0 / 0 / 0
Регистрация: 08.01.2023
Сообщений: 10
08.01.2023, 21:00  [ТС]
u235, нет, кавычки не помогли!(
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.01.2023, 21:01
ДА НЕ В ПИТОНОВСКИЙ ШЕЛЛ!!!!!

Добавлено через 26 секунд
Нажми Win+R, введи cmd и туда суй!
0
0 / 0 / 0
Регистрация: 08.01.2023
Сообщений: 10
08.01.2023, 21:04  [ТС]
iSmokeJC, вот какой результат:
Code
1
2
3
4
5
6
>>> zip-qr C:\Users\PC-2\Desktop\1111\reserve_python\20230108\205436_12312.zip "C:\Users\PC-2\Desktop\1111\1"
  File "<stdin>", line 1
    zip-qr C:\Users\PC-2\Desktop\1111\reserve_python\20230108\205436_12312.zip "C:\Users\PC-2\Desktop\1111\1"
           ^
SyntaxError: invalid syntax
>>>
Добавлено через 2 минуты
iSmokeJC, вот просто в командной строке вбил без запуска python

C:\Users\PC-2>zip-qr C:\Users\PC-2\Desktop\1111\reserve_python\20230108\2 05436_12312.zip "C:\Users\PC-2\Desktop\1111\1"
"zip-qr" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.01.2023, 21:05
После zip пробел
0
0 / 0 / 0
Регистрация: 08.01.2023
Сообщений: 10
08.01.2023, 21:17  [ТС]
iSmokeJC

C:\Users\PC-2>zip -qr C:\Users\PC-2\Desktop\1111\reserve_python\20230108\2 10824_1231.zip "C:\Users\PC-2\Desktop\1111\1"

zip error: Nothing to do! (try: zip -qr C:\Users\PC-2\Desktop\1111\reserve_python\20230108\2 10824_1231.zip . -i C:\Users\PC-2\Desktop\1111\1)

Добавлено через 4 минуты
iSmokeJC,ввел предложенный в командной строке вариант, и резервирование получилось, файл в папке появился, только я чет не понял, почему в терминале у меня все равно та же ошибка вылетает?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.01.2023, 21:19
Ну видать, с тех времен что-то поменялось. Вон, и ключик -i какой-то
В своей питоновской проге измени команду на правильную и наслаждайся
0
0 / 0 / 0
Регистрация: 08.01.2023
Сообщений: 10
08.01.2023, 21:35  [ТС]
iSmokeJC, т.е. вот эту строку из cmd : "zip -qr C:\Users\PC-2\Desktop\1111\reserve_python\20230108\2 10824_1231.zip . -i C:\Users\PC-2\Desktop\1111\1" мне необходимо вставить в свой код? в строку 20 после zip_command= , я правильно понимаю?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import os
import time
 
what_to_reserve = ['"C:\\Users\\PC-2\\Desktop\\1111\\1"']
 
where_to_save = 'C:\\Users\\PC-2\\Desktop\\1111\\reserve_python'
 
today = where_to_save + os.sep + time.strftime ('%Y%m%d')
now = time.strftime('%H%M%S')
 
comment=input('Введите комментарий: ')
if len(comment)==0:
    target = today + os.sep + now + '.zip'
else:
    target=today + os.sep + now + '_' + comment.replace(' ','_') + '.zip'
 
if not os.path.exists(today):
    os.mkdir(today)
    print('Каталог успешно создан', today)
zip_command='zip -qr {0} {1}'.format(target, ' '.join(what_to_reserve))
print(zip_command)
if os.system(zip_command)==0:
    print("Резервная копия успешно создана в ", target)
else:
    print("Ошибка!")
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.01.2023, 21:37
Лучший ответ Сообщение было отмечено Asphexia как решение

Решение

Python
1
zip_command='zip -qr {0} . -i {1}'.format(target, ' '.join(what_to_reserve))
Добавлено через 18 секунд
наверно так
2
0 / 0 / 0
Регистрация: 08.01.2023
Сообщений: 10
08.01.2023, 21:44  [ТС]
iSmokeJC, спасибо большое за помощь, у тебя ангельское терпение!)
Не просто так обучаться, когда даже в учебном пособии устаревшая информация.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.01.2023, 21:44
Помогаю со студенческими работами здесь

Резервные копии в cpanel
Здравствуйте! Такой вопрос: нужно восстановить сайт. У меня есть резервная копия домашнего каталога. В cpanel захожу в файлы-резервные...

Пропадают резервные копии
Добрый день! После создания резервной копии сайта, через 5-10 часов, битрикс автоматом их удаляет. Куда смотреть? с битриксом опыта мало.

Резервные копии 1с: предприятие
Слетела windows. Установлен 1с предприятие 8.2. Базы хранятся на отдельном диски. Необходимо переустановить систему. Никогда не работал с...

Резервные копии данных в облако
Доброго дня. Долго думал где создать данную тему, но решил, что тут самое то. Если не так, прошу модератора перенести данную тему куда...

Не удаляются старые резервные копии
Здравствуйте. Как я понял, мы можем удалить старые файлы в задаче самого бэкапа, если мы пишем в 1 файл. Если в разные, то нам необходимо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru