Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 24.03.2020, 11:14   #1
Димитрий22
 
Регистрация: 29.07.2019
Сообщений: 7
По умолчанию Отказано в разрешении

Изучаю Python. Написал приложение, по самоучителю, которое должно архивировать папку, перед этим проверяя какие имена архива уже использовались.

Код:
#! python3
#Копирует папку вместе со всем содержимым в архив и присваивает порядковый номер

import zipfile, os

def backupToZip (folder):
    #Создание резервной копии содержимого папки "folder" в виде zip-файла
    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 += 1

    #TODO: Создать zip файл
    print ('Создается резервная копия - %s' % (zipfileName))
    backupFile = zipfile.ZipFile(folder)

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

    print('Готово')

backupToZip('D:\\DB')
Запускаю и появляется ошибка
C:\Users\администратор\PycharmProje cts\untitled\venv\Scripts\python.ex e C:/Users/администратор/.PyCharm2019.2/config/scratches/BackUpToZip.py
Traceback (most recent call last):
Создается резервная копия - DB_1.zip
File "C:/Users/администратор/.PyCharm2019.2/config/scratches/BackUpToZip.py", line 39, in <module>
backupToZip('D:\\DB')
File "C:/Users/администратор/.PyCharm2019.2/config/scratches/BackUpToZip.py", line 22, in backupToZip
backupFile = zipfile.ZipFile(folder)
File "C:\Users\администратор\AppData\Loc al\Programs\Python\Python37\lib\zip file.py", line 1207, in __init__
self.fp = io.open(file, filemode)
PermissionError: [Errno 13] Permission denied: 'D:\\DB'

Process finished with exit code 1

Не могу найти ответ в нете, есть более опытные специалисты? Что делать?
Димитрий22 вне форума Ответить с цитированием
Старый 28.03.2020, 16:51   #2
nick-one
Пользователь
 
Регистрация: 28.03.2017
Сообщений: 35
По умолчанию

Вы делаете резервную копию, а её полагается класть в другую папку. Т.е. вам нужно в ф-ция передавать путь к папке для архивации и куда складывать зипы. Зипы можно именовать по дате 28_03_2020.zip .
Возможно код не работает из-за этой строчки:
Цитата:
Сообщение от Димитрий22 Посмотреть сообщение
newBase / os.path.basename(folder) + '_'
И еще возможно проблема с доступом:
Цитата:
Сообщение от Димитрий22 Посмотреть сообщение
Permission denied
Чуть не забыл, еще вы забыли открыть зип на запись и закрываете его раньше времени(смотрите форы).

Последний раз редактировалось nick-one; 28.03.2020 в 17:00.
nick-one вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
XMLDocument.LoadFromFile отказано в доступе X11 Общие вопросы Delphi 4 10.03.2015 16:48
Отказано в доступе Makin_tosh C++ Builder 9 15.05.2013 21:08
VB.NET Отказано в доступе при распаковке ресурсов на диск Inex Общие вопросы .NET 1 01.11.2012 11:31
Отказано в доступе до диска Е Sasha_Honcharuk Безопасность, Шифрование 0 26.03.2011 20:08
Отказано в доступе Bat{CMD}_Men Операционные системы общие вопросы 8 20.06.2010 17:35


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS