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

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

Код: 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
11.03.2012, 12:46
    #37698684
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Python] Архивация директории
Гость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
11.03.2012, 12:58
    #37698697
Гость777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Python] Архивация директории
немного не доходит с первого раза... результат тот же...

Код: 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
11.03.2012, 13:04
    #37698709
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Python] Архивация директории
Гость777результат тот же...
А какой результат то, собственно?
...
Рейтинг: 0 / 0
11.03.2012, 13:06
    #37698714
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Python] Архивация директории
Не?
glob.glo d
...
Рейтинг: 0 / 0
11.03.2012, 13:10
    #37698725
Гость777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Python] Архивация директории
FishHook,

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

собственно так.
...
Рейтинг: 0 / 0
11.03.2012, 13:18
    #37698742
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Python] Архивация директории
А понял!
Ты пытаешься заархивировать целиком каталог! Не проканает, только файлы добавляются, рекурсивный обход файлов в каталоге тебе поможет
...
Рейтинг: 0 / 0
11.03.2012, 13:19
    #37698747
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Python] Архивация директории
HettНе?
glob.glo d
Не, это я не на ту кнопку нажал, а код не проверял
...
Рейтинг: 0 / 0
11.03.2012, 13:23
    #37698752
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Python] Архивация директории
Дарю!
Архивация файлов во вложенных папках с помощью 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
11.03.2012, 20:31
    #37699483
Гость777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Python] Архивация директории
А подскажите пожалуйста как запустить rar через шелл питона с параметрами?
...
Рейтинг: 0 / 0
07.11.2012, 16:34
    #38028971
Megaxela
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Python] Архивация директории
Скажите пожалуйста, зачем так париться? Я предлагаю свой вариант решения (Выше предложенный вариант у меня не заработал.)
Код: 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
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [Python] Архивация директории / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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