昨天接到了个任务,其中一小部分功能是通过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方法,关闭文件,清理资源也不会受影响。
以上。