Форум сайта python.su
0
Доброго времени суток, уважаемые!
На днях начал изучать python. Возник вопрос, как сделать архив каталога сов сем содержимым?
Делаю так:
#!/usr/bin/python #coding=utf8 import datetime import zipfile import os now_date=datetime.date.today() src="/var/www" dst="backup-"+str(now_date)+".zip" zip=zipfile.ZipFile(dst, 'w') zip.write(src, os.path.basename(src), zipfile.ZIP_DEFLATED) zip.close()
Офлайн
0
Так должно работать
with ZipFile('test.zip', 'w') as zip: path = 'path\to\folder' files = os.listdir(path) for i in files: file = os.path.join(path, i) zip.write(file)
Офлайн
0
Выдает:
File "./new.py", line 6, in <module> with zipfile.ZipFile('new.zip', 'w') as zip: AttributeError: ZipFile instance has no attribute '__exit__'
Офлайн
0
Я понимаю, что вопрос возможно весьма низкого уровня, но не могли бы вы пояснить чайнику как его решить?
Офлайн
31
Попробуй просто без “with as”
import zipfile import os zipfd = zipfile.ZipFile('test.zip','w', zipfile.ZIP_DEFLATED) path = '1' files = os.listdir(path) for i in files: file = os.path.join(path, i) zipfd.write(file) zipfd.close()
Отредактировано sanodin (Сен. 4, 2013 07:03:20)
Офлайн
0
sanodin
Попробуй просто без “with as”
import zipfile
import os
zipfd = zipfile.ZipFile(open('test.zip','w'),'w', zipfile.ZIP_DEFLATED)
path = ‘1’
files = os.listdir(path)
for i in files:
file = os.path.join(path, i)
zipfd.write(file)
zipfd.close()
zipfile.ZipFile(open('test.zip','w'),'w', zipfile.ZIP_DEFLATED)
os.path.join(path, i)
Офлайн
47
Офлайн
31
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()
Отредактировано sanodin (Сен. 4, 2013 07:06:31)
Офлайн
253
А вам не кажется что для стандартных задачек лучше использовать стандартный подход:
import subprocess as sp sp.check_call("7z a -tzip arhname dirname")
Отредактировано doza_and (Сен. 4, 2013 07:35:10)
Офлайн
0
sanodinimport 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()
Офлайн