zoukankan      html  css  js  c++  java
  • 020: class, objects and instance: 一个简单的例子,压缩文件中内容的替换

    这个例子是对前面学习的知道的一个简单总结。

    在设计类的时候,并非所有的类都是埋头干活的类,同时也需要有很多类似于管理的类,这样的类的功能就是调用其他的类来共同的完成任务。

    import sys
    import os
    import shutil
    import zipfile
    
    class ZipReplace(object):
        def __init__(self, file_name, search_string, replace_string):
            self.file_name = file_name
            self.search_string = search_string
            self.replace_string = replace_string
            self.temp_directory = "unzipped-{}".format(file_name)
    
        def __full_filename(self, file_name):
            return os.path.join(self.temp_directory, file_name)
        
        def zip_find_replace(self):
            self.unzip_files()
            self.find_replace()
            self.zip_files()
    
        def unzip_files(self):
            os.mkdir(self.temp_directory)
            zip = zipfile.ZipFile(self.file_name)
            try:
                zip.extractall(self.temp_directory)
            finally:
                zip.close()
    
        def find_replace(self):
            for file_name in os.listdir(self.temp_directory):
                with open(self.__full_filename(file_name)) as file:
                    contents = file.read()
    
                contents = contents.replace(self.search_string, self.replace_string)
    
                with open(self.__full_filename(file_name), 'w') as file:
                    file.write(contents)
    
        def zip_files(self):
            file = zipfile.ZipFile(self.file_name, 'w')
    
            for file_name in os.listdir(self.temp_directory):
                file.write(self.__full_filename(file_name), file_name)
            
            shutil.rmtree(self.temp_directory)    
    
    zr = ZipReplace("test.zip", 'hello', 'hello world...')    
    zr.zip_find_replace()                                
  • 相关阅读:
    hdu 5723 Abandoned country 最小生成树 期望
    OpenJ_POJ C16G Challenge Your Template 迪杰斯特拉
    OpenJ_POJ C16D Extracurricular Sports 打表找规律
    OpenJ_POJ C16B Robot Game 打表找规律
    CCCC 成都信息工程大学游记
    UVALive 6893 The Big Painting hash
    UVALive 6889 City Park 并查集
    UVALive 6888 Ricochet Robots bfs
    UVALive 6886 Golf Bot FFT
    UVALive 6885 Flowery Trails 最短路
  • 原文地址:https://www.cnblogs.com/jcsz/p/5164755.html
Copyright © 2011-2022 走看看