优化以下代码 with openpyxl.Workbook() as workbook: worksheet = workbook.active for row_data in data: worksheet.append(row_data) workbook.save(targetfile) print("data is done")
时间: 2023-12-25 17:05:30 浏览: 154
可以考虑将写入操作放到一个函数中,同时在函数内部使用 with 语句自动管理资源,代码如下:
```
import openpyxl
def write_data_to_excel(data, targetfile):
with openpyxl.Workbook() as workbook:
worksheet = workbook.active
for row_data in data:
worksheet.append(row_data)
workbook.save(targetfile)
if __name__ == '__main__':
data = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']]
targetfile = 'output.xlsx'
write_data_to_excel(data, targetfile)
print("data is done")
```
这样做可以提高代码的可读性和可维护性,同时也保证了资源的正确释放。
相关问题
改进以下代码 def write_data_to_excel(self,data, targetfile): workbook = openpyxl.Workbook() try: worksheet = workbook.active for row_data in data: worksheet.append(row_data) workbook.save(targetfile) finally: workbook.close()
可以使用 "with" 语句来替代 "try-finally" 语句,这样可以更简洁地关闭 workbook。同时,可以将 workbook 创建的过程放在 try 语句块中,这样可以在出现异常时及时释放资源。改进后的代码如下:
```
def write_data_to_excel(self, data, targetfile):
workbook = openpyxl.Workbook()
try:
worksheet = workbook.active
for row_data in data:
worksheet.append(row_data)
with open(targetfile, 'wb') as file:
workbook.save(file)
finally:
workbook.close()
```
其中,使用了 "with" 语句来打开文件并保存 workbook,这样可以自动关闭文件。同时,打开文件时使用了二进制模式 "wb",以避免在不同操作系统上出现的换行符问题。
优化以下代码 workbook = openpyxl.Workbook() worksheet = workbook.active for row_num, row_data in enumerate(comment_id, start=1): for col_num, col_data in enumerate(row_data, start=1): worksheet.cell(row=row_num , column=col_num , value=col_data) workbook.save(targetfile) print("data is done")
可以优化的地方有:
1. 使用 with 语句来自动关闭 workbook,避免文件未关闭的风险;
2. 使用 worksheet.append() 方法来代替双重循环,可以减少代码量和提高效率;
3. 将 print() 函数移到 with 语句块外面,避免在数据处理期间频繁输出。
优化后的代码如下:
```
import openpyxl
comment_id = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
targetfile = "data.xlsx"
with openpyxl.Workbook() as workbook:
worksheet = workbook.active
for row_data in comment_id:
worksheet.append(row_data)
workbook.save(targetfile)
print("data is done")
```
注意:这里的示例代码中,我为了演示方便,将 comment_id 和 targetfile 直接赋值了,实际使用时需要根据实际情况进行修改。
阅读全文