bz2.compress/बाइनरी डेटा के साथ काम करने को संपीड़ित:
>>> import bz2
>>> compressed = bz2.compress(b'test_string')
>>> compressed
b'BZh91AY&SYJ|i\x05\x00\x00\x04\x83\x80\x00\x00\x82\xa1\x1c\x00 \x00"\x03h\x840"
P\xdf\x04\x99\xe2\xeeH\xa7\n\x12\tO\x8d \xa0'
>>> bz2.decompress(compressed)
b'test_string'
संक्षेप में - आप फ़ाइल पर कार्रवाई करने की जरूरत है सामग्री मैन्युअल रूप से। यदि आपके पास बहुत बड़ी फ़ाइलें हैं तो आपको bz2.BZ2Decompressor
से bz2.decompress
का उपयोग करना पसंद करना चाहिए, क्योंकि उत्तरार्द्ध की आवश्यकता है कि आप पूरी फ़ाइल को बाइट सरणी में संग्रहीत करें।
for filename in files:
filepath = os.path.join(dirpath, filename)
newfilepath = os.path.join(dirpath,filename + '.decompressed')
with open(newfilepath, 'wb') as new_file, open(filepath, 'rb') as file:
decompressor = BZ2Decompressor()
for data in iter(lambda : file.read(100 * 1024), b''):
new_file.write(decompressor.decompress(data))
आप भी इस और भी आसान बनाने के लिए bz2.BZ2File
उपयोग कर सकते हैं:
for filename in files:
filepath = os.path.join(dirpath, filename)
newfilepath = os.path.join(dirpath, filename + '.decompressed')
with open(newfilepath, 'wb') as new_file, bz2.BZ2File(filepath, 'rb') as file:
for data in iter(lambda : file.read(100 * 1024), b''):
new_file.write(data)
स्रोत
2013-06-06 13:59:17
ऐसा लगता है आपके चर के कुछ है कि कोड में मिश्रित कर रहे हैं की तरह। अन्यथा, [प्रलेखन] (http://docs.python.org/2/library/bz2.html) कहता है कि डिकंप्रेस डेटा लेता है, फ़ाइल नाम नहीं: 'bz2.decompress (डेटा)' – ChrisP