Python学习笔记——关于with...as

    xiaoxiao2022-07-05  166

    昨天接到了个任务,其中一小部分功能是通过com接口,接收数据然后存放在excel表中 emmmm,这就很想了想, 接口读数据就用pyserail就行, 然后excel使用xlwt就行

    在写程序的时候,想法excel单独成类进行操作, 写的时候发现需要有新建,最后操作完毕有保存, 咦?似曾相识的赶脚啊

    with open() as f: f.read() f.write()

    有个想法,能把这个类写成这样不就好了,就不用最后还得进行保存操作,省得麻烦,最最重要的是,这个写法可以进行异常处理哟~

    class ExcelOperation: file_name = 'temple_data.xls' def __enter__(self): print('__enter__') return self def __init__(self): print('__init__') self.file_name = datetime.datetime.now().strftime('%Y-%m-%d_%H:%M:%S') + '.xls' self.book = xlwt.Workbook() # create a new excel file sheet = self.book.add_sheet('data1') # add a sheet into excel sheet.write(0, 0, 'force') # insert title force sheet.write(0, 2, 'pressure') # insert title pressure sheet.write(0, 4, 'displacement') # insert title displayment def write_data(self): print('write_data') pass def close(self): self.book.save(self.file_name) def __exit__(self, exc_type, exc_val, exc_tb): print('__exit__') # 调用方法 with ExcelOperation() as eo: eo.write_data()

    执行之后的结果

    主要的两个重写的函数

    1、当新建类的时候执行 __init__ 然后新建excel 等等一些初始化操作 2、利用with as 操作就会执行 __enter__方法 我们这里将已经新建好的类对象返回 return self 3、在with as 结构体结束的时候 会自动调用__exit__ 这时候我们在这里进行文件的保存就好了

    就算结构体中的程序有错误,最后也会执行exit方法,关闭文件,清理资源也不会受影响。

    以上。

    最新回复(0)