English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

طريقة تحقيق الضغط والتوسع في ملفات gzip باستخدام Python

يشرح هذا المقال كيفية تنفيذ ضغط وفك ضغط ملفات gzip باستخدام بايثون. يُشارك معكم للاستفادة، ويتمثل كما يلي:

#encoding=utf-8
#author: walker
#date: 2015-10-26
#summary: اختبار ضغط/فك ضغط ملفات gzip
import gzip
BufSize = 1024*8
def gZipFile(src, dst):
  fin = open(src, 'rb')
  fout = gzip.open(dst, 'wb')
  in2out(fin, fout)
def gunZipFile(gzFile, dst):
  fin = gzip.open(gzFile, 'rb')
  fout = open(dst, 'wb')
  in2out(fin, fout)
def in2out(fin, fout):
  while True:
    buf = fin.read(BufSize)
    if len(buf) < 1:
      break
    fout.write(buf)
  fin.close()
  fout.close()
if __name__ == '__main__':
  src = r'D:\tmp\src.txt'
  dst = r'D:\tmp\src.txt.gz'
  ori = r'D:\tmp\ori.txt'
  gZipFile(src, dst)
  print('gZipFile over!')
  gunZipFile(dst, ori)
  print('gunZipFile over!')

يمكن بسهولة ت封装ها في فئة:

class GZipTool:
  def __init__(self, bufSize):
    self.bufSize = bufSize
    self.fin = None
    self.fout = None
  def compress(self, src, dst):
    self.fin = open(src, 'rb')
    self.fout = gzip.open(dst, 'wb')
    self.__in2out()
  def decompress(self, gzFile, dst):
    self.fin = gzip.open(gzFile, 'rb')
    self.fout = open(dst, 'wb')
    self.__in2out()
  def __in2out(self,):
    while True:
      buf = self.fin.read(self.bufSize)
      if len(buf) < 1:
        break
      self.fout.write(buf)
    self.fin.close()
    self.fout.close()

للمزيد من المعلومات حول Python، يمكن للقراء المهتمين بالتحقق من موضوعات هذا الموقع: 'تحليل تقنيات التشغيل الملف والدليل في Python'، 'تحليل تقنيات التشغيل الملف النصي في Python'، 'تحليل تقنيات التشغيل URL في Python'، 'تحليل تقنيات التشغيل الصور في Python'، 'تعليم بنيات البيانات والخوارزميات في Python'، 'تحليل تقنيات البرمجة Socket في Python'، 'تحليل تقنيات استخدام الدوال في Python'، 'تحليل تقنيات التشغيل النص في Python'، و 'تعليم الدخول والترقي في Python'.

آمل أن يساعدك هذا المقال في تصميم برامج Python الخاصة بك.

بيان: محتوى هذا المقال تم جمعه من الإنترنت، ويتمتع المالك الأصلي بحقوق الطبع والنشر، ويتم جمع المحتوى من قبل المستخدمين عبر الإنترنت بشكل تلقائي وتحميله، ويتمتع هذا الموقع بعدم امتلاك حقوق الملكية، ولا يتم تعديل المحتوى بشكل يدوي، ولا يتحمل هذا الموقع أي مسؤولية قانونية متعلقة بذلك. إذا كنت قد وجدت محتوى يشتبه في انتهاك حقوق النسخ، فأنت موصى به أن ترسل بريدًا إلكترونيًا إلى: notice#oldtoolbag.com (عند إرسال البريد الإلكتروني، يرجى استبدال '#' بـ '@') لإبلاغنا، وقدم أدلة الدليل، وسيتم حذف المحتوى المزعوم الذي يشتبه في انتهاك حقوق النسخ على الفور.

تحب أن تراه