Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: zipfile как создать архив  (Прочитано 1867 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн A.J

  • Автор темы
  • Участник
  • *
  • Сообщений: 230
    • Просмотр профиля
zipfile как создать архив
« : 01 Июля 2014, 14:42:49 »
Добрый день !
Подскажите как можно использовать модуль zipfile чтобы за  за архивировать файлы в zip архив.
На  widows 7 вот код


# 1. Файлы и каталоги, которые необходимо скопировать, собираются в список.
source = [' "D:\\Documents" ', 'C:\\book2',]
# Заметьте, что для имён, содержащих пробелы, необходимо использовать
# двойные кавычки внутри строки.

# 2. Резервные копии должны храниться в основном каталоге резерва.
target_dir = 'D:\\book'# Подставьте тот путь, который вы будете использовать.

# 3. Файлы помещаются в zip-архив.
# 4. Текущая дата служит именем подкаталога в основном каталоге
today = target_dir + os.sep + time.strftime('%Y%m%d')

# Текущее время служит именем zip-архива
now = time.strftime('%H%M%S')

# Запрашиваем комментарий пользователя для имени файла
comment = input('Введите комментарий --> ')
if len(comment) == 0: # проверяем, введён ли комментарий
    target = today + os.sep + now + '.zip'

else:
    target = today + os.sep + now + '_' + \
        comment.replace('', '') +  '.zip'

# Создаём каталог, если его ещё нет
if not os.path.exists(today):
    os.mkdir(today) # создание каталога
print('Католог успешно создан', today)



# 5. Используем команду "zip" для помещения файлов в zip-архив
zip_command = " zip -gr {0} {1}".format(target, ' '.join(source))


# Запускаем создание резервной копии
if os.system(zip_command) == 0::
    print('Создание резервной кории НЕ УДАЛОСЬ ')
    print('Резервная копия успешно создана в',target)
else

Можно ли  за архивировать этим модулям  zipfile
Как это  с делать  спасибо заранее

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: zipfile как создать архив
« Ответ #1 : 01 Июля 2014, 18:10:31 »
В чем глобальная задача? Переписать код на bash или python ? Стоит ли, потому как есть куча всяких "заточенных" под конкретные задачи приложений и скриптов ?
Код: (bash) [Выделить]
#!/bin/bash

# 1. Файлы и каталоги, которые необходимо скопировать, собираются в список.
source=( "$HOME/Documents" "$HOME/Book2" )
# Заметьте, что для имён, содержащих пробелы, необходимо использовать
# двойные кавычки внутри строки.

# 2. Резервные копии должны храниться в основном каталоге резерва.
target_dir="$HOME/book" # Подставьте тот путь, который вы будете использовать.

# 3. Файлы помещаются в zip-архив.
# 4. Текущая дата служит именем подкаталога в основном каталоге
today=$(date +%Y%m%d)

# Текущее время служит именем zip-архива
now=$(date +%H%M%S)

# Запрашиваем комментарий пользователя для имени файла
read -p 'Введите комментарий --> ' inputstr

if [ x$input == x ] # проверяем, введён ли комментарий
then
    target="$target_dir/$today/${now}.zip"
else
    target="$target_dir/$today/${now}_${inputstr}.zip"
fi

# Создаём каталог, если его ещё нет
if [ ! -d "$target_dir/$today" ]
then
    mkdir -p "$target_dir/$today" # создание каталога
    echo "Каталог $today успешно создан"
fi

# 5. Используем команду "zip" для помещения файлов в zip-архив
zip_command() {
zip -r "$target" ${source[*]}
}

# Запускаем создание резервной копии
if zip_command
then
    printf '%s\n' "Резервная копия успешно создана в $target"
else
    printf '%s\n' "Создание резервной копии НЕ УДАЛОСЬ "
fi
« Последнее редактирование: 01 Июля 2014, 18:21:21 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн hon

  • Старожил
  • *
  • Сообщений: 1044
  • Ubuntu 12.04 LTS
    • Просмотр профиля
Re: zipfile как создать архив
« Ответ #2 : 01 Июля 2014, 19:35:31 »
zip нормально не поддерживает права и невиндовые кодировки. Лучше используй tar.gz или tar.xz (для сильного сжатия).

Оффлайн A.J

  • Автор темы
  • Участник
  • *
  • Сообщений: 230
    • Просмотр профиля
Re: zipfile как создать архив
« Ответ #3 : 02 Июля 2014, 12:03:53 »
Я хотел узнать можно  на Python использовать функцию zipfile чтобы за архивировать фалы на windows 7.

Не использовать консольную команду  для архивации фала  в windows 7  или так сделать нельзя

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: zipfile как создать архив
« Ответ #4 : 02 Июля 2014, 17:00:09 »
Код: (Python) [Выделить]
# coding: utf-8

import os
import zipfile
import time

# 1. Файлы и каталоги, которые необходимо скопировать, собираются в список.
source = [' "D:\\Documents" ', 'C:\\book2',]
# Заметьте, что для имён, содержащих пробелы, необходимо использовать
# двойные кавычки внутри строки.

# 2. Резервные копии должны храниться в основном каталоге резерва.
target_dir = 'D:\\book'# Подставьте тот путь, который вы будете использовать.

# 3. Файлы помещаются в zip-архив.
# 4. Текущая дата служит именем подкаталога в основном каталоге
today = target_dir + os.sep + time.strftime('%Y%m%d')

# Текущее время служит именем zip-архива
now = time.strftime('%H%M%S')

# Запрашиваем комментарий пользователя для имени файла
comment = input('Введите комментарий --> ')
if len(comment) == 0: # проверяем, введён ли комментарий
    target = today + os.sep + now + '.zip'
else:
    target = today + os.sep + now + '_' + comment.replace('', '') +  '.zip'

# Создаём каталог, если его ещё нет
if not os.path.exists(today):
    os.makedirs(today) # создание каталога
    print('Католог успешно создан', today)


archive = zipfile.ZipFile(target,'w')
for path in source:
    for root, dirs, files in os.walk(path):
        for filename in files:
            archive.write(os.path.join(root, filename))
archive.close()
« Последнее редактирование: 02 Июля 2014, 18:45:55 от .ubuntufan »

 

Страница сгенерирована за 0.046 секунд. Запросов: 22.