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


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

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

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 5631
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Re: zipfile как создать архив
« Ответ #1 : 01 Июль 2014, 18:10:31 »
В чем глобальная задача? Переписать код на bash или python ? Стоит ли, потому как есть куча всяких "заточенных" под конкретные задачи приложений и скриптов ?
Код: Bash
  1. #!/bin/bash
  2.  
  3. # 1. Файлы и каталоги, которые необходимо скопировать, собираются в список.
  4. source=( "$HOME/Documents" "$HOME/Book2" )
  5. # Заметьте, что для имён, содержащих пробелы, необходимо использовать
  6. # двойные кавычки внутри строки.
  7.  
  8. # 2. Резервные копии должны храниться в основном каталоге резерва.
  9. target_dir="$HOME/book" # Подставьте тот путь, который вы будете использовать.
  10.  
  11. # 3. Файлы помещаются в zip-архив.
  12. # 4. Текущая дата служит именем подкаталога в основном каталоге
  13. today=$(date +%Y%m%d)
  14.  
  15. # Текущее время служит именем zip-архива
  16. now=$(date +%H%M%S)
  17.  
  18. # Запрашиваем комментарий пользователя для имени файла
  19. read -p 'Введите комментарий --> ' inputstr
  20.  
  21. if [ x$input == x ] # проверяем, введён ли комментарий
  22. then
  23.     target="$target_dir/$today/${now}.zip"
  24. else
  25.     target="$target_dir/$today/${now}_${inputstr}.zip"
  26. fi
  27.  
  28. # Создаём каталог, если его ещё нет
  29. if [ ! -d "$target_dir/$today" ]
  30. then
  31.     mkdir -p "$target_dir/$today" # создание каталога
  32.     echo "Каталог $today успешно создан"
  33. fi
  34.  
  35. # 5. Используем команду "zip" для помещения файлов в zip-архив
  36. zip_command() {
  37. zip -r "$target" ${source[*]}
  38. }
  39.  
  40. # Запускаем создание резервной копии
  41. if zip_command
  42. then
  43.     printf '%s\n' "Резервная копия успешно создана в $target"
  44. else
  45.     printf '%s\n' "Создание резервной копии НЕ УДАЛОСЬ "
  46. 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
  1. # coding: utf-8
  2.  
  3. import os
  4. import zipfile
  5. import time
  6.  
  7. # 1. Файлы и каталоги, которые необходимо скопировать, собираются в список.
  8. source = [' "D:\\Documents" ', 'C:\\book2',]
  9. # Заметьте, что для имён, содержащих пробелы, необходимо использовать
  10. # двойные кавычки внутри строки.
  11.  
  12. # 2. Резервные копии должны храниться в основном каталоге резерва.
  13. target_dir = 'D:\\book'# Подставьте тот путь, который вы будете использовать.
  14.  
  15. # 3. Файлы помещаются в zip-архив.
  16. # 4. Текущая дата служит именем подкаталога в основном каталоге
  17. today = target_dir + os.sep + time.strftime('%Y%m%d')
  18.  
  19. # Текущее время служит именем zip-архива
  20. now = time.strftime('%H%M%S')
  21.  
  22. # Запрашиваем комментарий пользователя для имени файла
  23. comment = input('Введите комментарий --> ')
  24. if len(comment) == 0: # проверяем, введён ли комментарий
  25.     target = today + os.sep + now + '.zip'
  26. else:
  27.     target = today + os.sep + now + '_' + comment.replace('', '') +  '.zip'
  28.  
  29. # Создаём каталог, если его ещё нет
  30. if not os.path.exists(today):
  31.     os.makedirs(today) # создание каталога
  32.     print('Католог успешно создан', today)
  33.  
  34.  
  35. archive = zipfile.ZipFile(target,'w')
  36. for path in source:
  37.     for root, dirs, files in os.walk(path):
  38.         for filename in files:
  39.             archive.write(os.path.join(root, filename))
  40. archive.close()
  41.  
« Последнее редактирование: 02 Июль 2014, 18:45:55 от .ubuntufan »

 

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