Проект создание резервной копии папки в зип файле.

s591962

Новичок
Пользователь
Окт 12, 2021
130
3
18
Изучаю питон по книге свейгарта Проект создание резервной копии папки в зип файле.
Код:
#! python3
# backupToZip.py - Копирует папку вместе с ее содержимым
# в ZIP - файл с инкоементируемым номером копии в имени файла.

import zipfile, os

def backupToZip(folder):
        # Создание резервной копии всего содержимого папки "folder"
        # в виде IP - файла.

        folder = os.path.abspath(folder) # убедится что задан абсолютный путь к файлу
        
        number = 1
        while True:
                zipFilename = os.path.basename(folder) + '_' + str(number) + '_zip'
                if not os.path.exists(zipFilename):
                        break
                number = number + 1

        print('Создается файл %s...' % (zipFilename))
        backupZip = zipfile.ZipFile(zipFilename, 'w')

        # Обход всего дерева папки и сжатие файлов содержавшихся в папке
        for foldername, subfolders, filenames in os.walk(folder):
                print('Добавление файлов из папки %s...'% (foldername))
                # Добавить в ZIP-файл текущую папку.
                backupZip.write(foldername)
                # Добавить в ZIP-файл все файлы из текущей папки.
                for filename in filenames:
                        newBase = os.path.basename(folder) + '_'
                        if filename.startswith(newBase) and filename.endswith('.zip'):
                                continue #не создавать резервные копии ZIP-файлов)
                        backupZip.write(os.path.join(foldername, filename))

        backupZip.close()               
        print('готово.')


backupToZip('D:\\Python\\1')

Идет ошибка. Не могу понять в чем
 

Aleksandr

Новичок
Пользователь
Апр 14, 2022
2
0
1
1649947105644.png
Привет, что за ошибка? Попробуй вместо
#! python3 просто #! python
 

s591962

Новичок
Пользователь
Окт 12, 2021
130
3
18
Получаю
Посмотреть вложение 1753
Привет, что за ошибка? Попробуй вместо
#! python3 просто #! python
Код:
D:\Python\1
1_1_zip
Создается файл 1_1_zip...
Добавление файлов из папки D:\Python\1...
Traceback (most recent call last):
  File "D:\Python\backupToZip.py", line 40, in <module>
    backupToZip('D:\\Python\\1')
  File "D:\Python\backupToZip.py", line 34, in backupToZip
    backupZip.write(os.path.join(foldername, filename))
  File "C:\Python310\lib\zipfile.py", line 1762, in write
    with open(filename, "rb") as src, self.open(zinfo, 'w') as dest:
  File "C:\Python310\lib\zipfile.py", line 1169, in close
    self._fileobj.seek(self._zinfo.header_offset)
OSError: [Errno 28] No space left on device


Попробовал. тоже самое. Интересно, что такое было раньше когда исполняемый файл был в папке где и файлы. Первый раз все нормально, потом ошибка. Вроде ничего не менял а появилась ошибка.
 

Aleksandr

Новичок
Пользователь
Апр 14, 2022
2
0
1
No space left on device - нет места на диске, слишком много зипуется.

backupToZip('D:\\Python\\1') - эта строчка задает то что мы будем зиповать.
попробуйте изменить на что-нибудь другое. предварительно его создав. Например,
backupToZip('С:\\Papka') - можно положить текстовый файл для проверки.
У меня код работает
 
Последнее редактирование:

s591962

Новичок
Пользователь
Окт 12, 2021
130
3
18
Спасибо. Ошибку определил. Просто при разных проверках она зашла в бесконечный цикл и заполнила весь диск. А когда я вернул все в исходное то выдавала ошибку.
 

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