powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Python Backup directory
3 сообщений из 3, страница 1 из 1
Python Backup directory
    #38393173
bald56rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня.
есть скрипт следующего содержания:
Код: 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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
import os, datetime, zipfile, glob, logging

#Текущее дата/время
curr_date = datetime.datetime.today()
#Текущая дата(используется для формирования имени архива)
now_date = datetime.date.today()
#Список того что будет архивироваться
FilesToBackup = []
#Что необдохимо архивировать
toBackup = os.path.join(os.path.curdir,'toBackup.ls')
#Куда необходимо архивировать
backupTo = "c:\\Backup"
#Формируем имя архива
BackupName = now_date.strftime("%A %d.%m.%Y") + '.zip'
#Формируем имя Лог файла
BackupLog = now_date.strftime("%A %d.%m.%Y") + '.log'
#Сколько дней хранить архивы
StoreBackupCopy = 7

logging.basicConfig(format = u'[%(asctime)s] %(levelname)-8s  %(message)s',
#                    level = logging.DEBUG,
                    filename = os.path.join(backupTo,BackupLog))

#Получаем корневые директории для архивирования
def GetSrcList(file):
    SrcLs = []
    with open(file) as f:
        SrcLs = f.read().splitlines()
    return SrcLs

#Функция заполняет список для архивирования
def GetListForBackup(PathForBackup):
    for file in os.listdir(PathForBackup):
        path = os.path.join(PathForBackup, file)
        if not os.path.isdir(path):
            FilesToBackup.append(path)
        else:
            GetListForBackup(path)

#Функция удаляет архивы старше определенной даты
def DelOldBackup():
   backupLs = glob.glob(os.path.join(backupTo,"*.*"))
   for ls in backupLs:
       fLastChange = datetime.datetime.fromtimestamp(os.path.getmtime(ls))
       PassDay = curr_date-fLastChange
       if PassDay.days > StoreBackupCopy:
            try:
                logging.warning(u'Удаляем файлы старше: '+str(StoreBackupCopy)+' дней')
                os.remove(ls)
                logging.warning(u'Файл '+ls+' был удален')
            except:
                logging.error(u'Ошибка удаления файла '+ls)

def backup(list_backup):
    logging.warning( u'Выполняется архивация файлов...' )
    with zipfile.ZipFile(os.path.join(backupTo,BackupName),'w',compression=zipfile.ZIP_DEFLATED) as Backup:
        for l in list_backup:
            try:
                Backup.write(l)
                logging.info(u'Добавляем файл '+l+' в архив '+Backup.filename)
            except:
                logging.error(u'Ошибка добавления файла: '+l+'в архив '+Backup.filename)

        Backup.close
        logging.warning( u'Архивация завершена' )

logging.warning( u'Заполняем список для архивирования абсолютными путями файлов' )

for c in GetSrcList(toBackup):
    GetListForBackup(c)

backup(FilesToBackup)
DelOldBackup()


все работает в плане архивирования, но охота прикрутить проверку полученного архива на валидность что бы в случае инвалида сообщать пользователю об этом.может кто реализовал подобное или подскажет как это сделать?
...
Рейтинг: 0 / 0
Python Backup directory
    #38394124
python123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Там и так есть обработка ошибки на добавление в архив.
Как вы собрались валидировать zip архив?
...
Рейтинг: 0 / 0
Python Backup directory
    #38394228
bald56rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
python123Там и так есть обработка ошибки на добавление в архив.
Как вы собрались валидировать zip архив?

Вы имеете ввиду этот кусок кода???
Код: python
1.
2.
3.
4.
5.
try:
        Backup.write(l)
        logging.info(u'Добавляем файл '+l+' в архив '+Backup.filename)
except:
        logging.error(u'Ошибка добавления файла: '+l+'в архив '+Backup.filename)


ну да я сделал отлов ошибок модулем try...except, этого будет достаточно?под валидировать я предполагал что то наподобие "Протестировать файл(ы) в архиве" у WinRar либо подобные функции у других архиваторов. а как отловить ситуацию возникновения такой ошибки в результате выполнения, что бы например оповестить пользователя об этом например письмом на мыло.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Python Backup directory
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]