错误提示:ValueError: I/O operation on closed file.,是啥原因?

新手上路,请多包涵

elif shu=='3':

slie='配送数量'
wb=openpyxl.load_workbook(path)
wb.save(path)
sheet_name="sheet0"

all_dict = {}
all_num = 0
num = 0

content = pd.read_excel(path, sheet_name=sheet_name)

print(content.head())

data = content[['业务日期', '企业编码', '企业名称', '商品编码', slie]]

for x in data.itertuples():

all_num += x[4]
keys = x[1] + str(x[2]) + str(x[3])
if keys not in all_dict:
    # print(x)
    all_dict[keys] = {
        "业务日期": x[1],
        "企业编码": x[2],
        '企业名称': x[3],
        '商品编码': x[4],

        slie: x[5]
    }
else:
    all_dict[keys][slie] += x[5]

result = [x for x in all_dict.values()]
pf = pd.DataFrame(result)
order = ["业务日期", "企业编码", '企业名称','商品编码', slie] # 指定列的顺序
pf = pf[order]
file_path = pd.ExcelWriter(path) # 打开excel文件

替换空单元格

输出

print('解析数据并保存数据')
pf.to_excel(file_path, encoding='utf-8', index=False, sheet_name="sheet1")
file_path.save()
print('数据处理完毕')
这是代码,之前运行都好好的,今天突然出了问题,ValueError: I/O operation on closed file.
以下是错误代码:
《门店配送-202107.xlsx》-下载成功
数据处理中请稍后……………………
C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\styles\stylesheet.py:221: UserWarning: Workbook contains no default style, apply openpyxl's default
warn("Workbook contains no default style, apply openpyxl's default")
Traceback (most recent call last):
File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\xml\etree\ElementTree.py", line 836, in _get_writer

yield file.write

File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\xml\etree\ElementTree.py", line 777, in write

short_empty_elements=short_empty_elements)

File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\xml\etree\ElementTree.py", line 942, in _serialize_xml

short_empty_elements=short_empty_elements)

File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\xml\etree\ElementTree.py", line 942, in _serialize_xml

short_empty_elements=short_empty_elements)

File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\xml\etree\ElementTree.py", line 942, in _serialize_xml

short_empty_elements=short_empty_elements)

File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\xml\etree\ElementTree.py", line 935, in _serialize_xml

write(" %s=\"%s\"" % (qnames[k], v))

MemoryError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "c:/Users/ylei4/OneDrive - JNJ/Desktop/配送脚本/高济大药房v1.py", line 105, in <module>

wb.save(path)

File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\workbook\workbook.py", line 407, in save

save_workbook(self, filename)

File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\writer\excel.py", line 293, in save_workbook

writer.save()

File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\writer\excel.py", line 275, in save

self.write_data()

File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\writer\excel.py", line 75, in write_data

self._write_worksheets()

File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\writer\excel.py", line 215, in _write_worksheets

self.write_worksheet(ws)

File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\writer\excel.py", line 200, in write_worksheet

writer.write()

File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\worksheet\_writer.py", line 361, in write

self.close()

File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\worksheet\_writer.py", line 369, in close

self.xf.close()

File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\worksheet\_writer.py", line 300, in get_stream

pass

File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\contextlib.py", line 119, in exit

next(self.gen)

File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\site-packages\et_xmlfile\xmlfile.py", line 50, in element

self._write_element(el)

File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\site-packages\et_xmlfile\xmlfile.py", line 77, in _write_element

xml = tostring(element)

File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\xml\etree\ElementTree.py", line 1136, in tostring

short_empty_elements=short_empty_elements)

File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\xml\etree\ElementTree.py", line 777, in write

short_empty_elements=short_empty_elements)

File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\contextlib.py", line 130, in exit

self.gen.throw(type, value, traceback)

File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\xml\etree\ElementTree.py", line 836, in _get_writer

yield file.write

File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\contextlib.py", line 524, in exit

raise exc_details[1]

File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\contextlib.py", line 509, in exit

if cb(*exc_details):

File "C:\Users\ylei4\AppData\Local\Programs\Python\Python37-32\lib\contextlib.py", line 384, in _exit_wrapper

callback(*args, **kwds)

ValueError: I/O operation on closed file.

有大神帮忙看看吗?救救孩子吧

阅读 4.7k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题