马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 极客4321 于 2022-1-29 12:04 编辑
从网上爬取几百页网页信息(数据量可能有点大)存入excel表中,可以运行一段时间,也保存了十几页的网页内容。
但是运行着就会报:PermissionError: [Errno 13] Permission denied: '***.xlsx'的错误。
从网上也搜索了,有说是openpyxl没有自动回收内存的,我也弄手动回收了(应该)。
常规写法报错,我还搞了openpyxl的“只写模式”,也不能解决问题
还有说是因为打开文件后没有关闭excel导致的,但是为什么程序是在保存了几个.xlsx文件后才报错的?
而且每一次运行后保存的.xlsx文件的数量是不一样的,即不是在同一个地方报错。
我是爬取网页的一个栏目。并且把这个栏目当成我的execl文件名,这个栏目的前22页都能正常保存到execl里面
报错后程序生成的execl里面也有前22页的内容
报错代码:
下面是我保存execl的代码,麻烦各位大佬看看写法有哪些问题?def save_excel(i,title,name,star,count,sold,min,max):
if i != 0:
wb = openpyxl.load_workbook('./{}.xlsx'.format(title))
ws = wb.active
long = len(name)
for i in range(long):
ws.append([ILLEGAL_CHARACTERS_RE.sub(r'', name[i]), star[i], count[i], sold[i],
str(min[i] / 10000) + '~' + str(max[i] / 10000)])
wb.save('{}.xlsx'.format(title))
wb.close()
del wb, ws
gc.collect()
else:
wb = openpyxl.Workbook(write_only = True)
ws = wb.create_sheet()
ws.append(['商品名称','评分','评价数量','销量','售价'])
col = ws.column_dimensions['A']
col.width = 50
col = ws.column_dimensions['B']
col.width = 15
col = ws.column_dimensions['C']
col.width = 15
col = ws.column_dimensions['D']
col.width = 15
col = ws.column_dimensions['E']
col.width = 25
long = len(name)
for i in range(long):
ws.append([ILLEGAL_CHARACTERS_RE.sub(r'',name[i]),star[i],count[i],sold[i],str(min[i]/10000)+'~'+str(max[i]/10000)])
wb.save('{}.xlsx'.format(title))
wb.close()
del wb, ws
gc.collect()
|