powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [Python] Архивация директории
11 сообщений из 11, страница 1 из 1
[Python] Архивация директории
    #37698664
Гость777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте,

мне необходимо заархивировать выбранные директории в каталоге,
делаю это так:

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
import glob;
import os;
import zipfile;

names = glob.glob('d:\works\*');

print("===находим файлики в каталоге===");

for name in names:
    if os.path.isdir(name):
        # заархивировать тут все name
        print (name);

# все сделал
print("все сделано");



подскажите пожалуйста, примерчик быть не плохо как это осуществить.
Большое спасибо!
...
Рейтинг: 0 / 0
[Python] Архивация директории
    #37698684
Фотография FishHook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость777,

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
>>> import zipfile
>>> import glob
>>> names=glob.glod('/home/smirnov/example/*')
>>> zip_file=zipfile.ZipFile('archive.zip', 'w')
>>> for i in names:
	    zip_file.write(i)

	
>>> zip_file.close()



Больше точки с запятой не ставь, а то прокляну
...
Рейтинг: 0 / 0
[Python] Архивация директории
    #37698697
Гость777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
немного не доходит с первого раза... результат тот же...

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
import glob
import os
import zipfile

names = glob.glob('d:\works\*')

print("===находим файлики в каталоге===")
print("===========")

for name in names:
    if os.path.isdir(name):
        # заархивировать тут все name
        print (name)
        zip_file = zipfile.ZipFile(name+".zip","w")
        zip_file.write(name)
        zip_file.close()
    

# все сделал
print("===========")
print("все сделано")
...
Рейтинг: 0 / 0
[Python] Архивация директории
    #37698709
Фотография FishHook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость777результат тот же...
А какой результат то, собственно?
...
Рейтинг: 0 / 0
[Python] Архивация директории
    #37698714
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не?
glob.glo d
...
Рейтинг: 0 / 0
[Python] Архивация директории
    #37698725
Гость777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FishHook,

Результат такой -
1.находит ВСЕ каталоги в указанном каталоге
2.создает зип архивы по имени каждого каталога, каждый зип архив - пустой - весит по 22 байта

собственно так.
...
Рейтинг: 0 / 0
[Python] Архивация директории
    #37698742
Фотография FishHook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А понял!
Ты пытаешься заархивировать целиком каталог! Не проканает, только файлы добавляются, рекурсивный обход файлов в каталоге тебе поможет
...
Рейтинг: 0 / 0
[Python] Архивация директории
    #37698747
Фотография FishHook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettНе?
glob.glo d
Не, это я не на ту кнопку нажал, а код не проверял
...
Рейтинг: 0 / 0
[Python] Архивация директории
    #37698752
Фотография FishHook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дарю!
Архивация файлов во вложенных папках с помощью zipfile
Код: 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.
# -*- coding: utf-8 -*-
import zipfile
import os
import sys
from os.path import join, getsize, exists
import io
import datetime
import fnmatch
import logging

VAR_FILE = "\\\\dataExchangesrv\\shared\\DefaultDir.var"
#VAR_FILE = "C:\\1\\DefaultDir.var"
try:
    with open(VAR_FILE) as f:
        DEFAULT_DIR = f.readline()
except:
    print("FATAL ERROR: CANNOT READ FILE {0}".format(VAR_FILE))
    print("CHECK ACCESS TO FILE {0} OR CHANGE SRC".format(VAR_FILE))
    sys.exit("FATAL ERROR: CANNOT READ FILE {0}".format(VAR_FILE))
dat = datetime.date.today()
zsuf = dat.strftime('%Y%m.zip')
LOG_FILENAME = DEFAULT_DIR + dat.strftime('Log\\arch%Y%m.log')
# create logger
logger = logging.getLogger("Архивация")
logger.setLevel(logging.DEBUG)
# create console handler and set level to debug
ch = logging.FileHandler(LOG_FILENAME)#logging.StreamHandler()
ch.setLevel(logging.DEBUG)
# create formatter
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
# add formatter to ch
ch.setFormatter(formatter)
# add ch to logger
logger.addHandler(ch)
print("Read messages in {0}".format(LOG_FILENAME))
logger.info("Архивация начата. Базовый каталог: {0}".format(DEFAULT_DIR))
for inout in ['Input', 'Output']:
    for pio in [DEFAULT_DIR + inout + '\\Arc\\', DEFAULT_DIR + inout + '\\Bak\\', DEFAULT_DIR + inout + '\\Log\\']:
        tz = pio + 'Zip\\'
        logger.info("Файлы из каталога {0} будут перенесены в zip-архив в каталог {1}".format(pio, tz))
        if not exists(tz):
            os.mkdir(tz)
        for ph in ['ME4CDF', 'CDE', 'Master', 'ME4BL', 'ME4PFA', 'ME4STO', 'ME4REG', 'ME4STM', 'Shipment', 'Receipt', 'Checking', 'ftpput', 'ftpget', 'mail']:
            ld = os.listdir(pio)
            fl = fnmatch.filter(ld, ph + '*')
            if fl != []:
                print(pio, ph + '*', fl)
                dstname = os.path.join(tz, ph + zsuf)
                logger.info("Добавляем {0}* фалы в архив {1}".format(ph, dstname))
                z = zipfile.ZipFile(dstname, mode="a", compression=zipfile.ZIP_DEFLATED, allowZip64=False)
                try:
                    for name in fl:
                        srcname = os.path.join(pio, name)
                        if name not in z.namelist():
                            logger.info("Добавление файла {0} к архиву {1}".format(srcname, dstname))
                            try:
                                z.write(srcname, name)
                            except:
                                logger.error("Не удалось добавить файл {0} к архиву {1}".format(srcname, dstname))
                            if name in z.namelist():
                                logger.info("Удаление файла {0}".format(srcname))
                                try:
                                    os.remove(srcname)
                                except:
                                    logger.error("Не удалось удалить файл {0}".format(srcname))
                finally:
                    if fl not in z.namelist():
                        logger.error("Не все файлы {0}* были успешно перенесены в архив {1}".format(ph, dstname))
                    z.close()
            else:
                logger.warning("Нет файлов {0}* для архивации в каталоге {1}".format(ph, pio))
logger.info("Архивация завершена")
print('OK')
...
Рейтинг: 0 / 0
[Python] Архивация директории
    #37699483
Гость777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А подскажите пожалуйста как запустить rar через шелл питона с параметрами?
...
Рейтинг: 0 / 0
[Python] Архивация директории
    #38028971
Megaxela
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скажите пожалуйста, зачем так париться? Я предлагаю свой вариант решения (Выше предложенный вариант у меня не заработал.)
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
import os, zipfile
from os.path import join, getsize
yourfolder = 'Ваша папка'
arch = zipfile.ZipFile('Название вашего архива.zip', 'w', zipfile.ZIP_DEFLATED)
for root, dirs, files in os.walk(yourfolder):
    print root+'\\'+str(files)
    for tarfile in files:
        if tarfile != '':
            arch.write(root+'\\'+tarfile)
arch.close()


Одна проблема - он записывает папки на русском языке какими - то крокозябрами.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [Python] Архивация директории
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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