python 报错“ValueError: I/O operation on closed file.” openpyxl 复制粘贴图片 不能保存第二遍 在不重复读取原表的前提下,请问应该怎么改?

python openpyxl 复制粘贴图片 不能保存第二遍 报错“ValueError: I/O operation on closed file.”在不重复读取原表的前提下,请问应该怎么改?

我想把abc.xlsx的一张图片,复制粘贴到两个新表(a-abc.xlsx,b-abc.xlsx)里面
a-abc.xlsx 保存了,
b-abc.xlsx保存不到

abc.xlsx 截图:

img

代码:
import openpyxl
filename=r"F:\desk\abc.xlsx"
book = openpyxl.load_workbook(filename)
sh = book['Sheet1']
for i in ['a-','b-']: 
    print(i)
    book2 = openpyxl.Workbook()
    sh2 = book2.active
    for image in sh._images:
        sh2.add_image(image)
    filename2="F:\desk\{}abc.xlsx".format(i)
    book2.save(filename2)
    print(filename2,'已保存')

运行结果及报错内容

a-
F:\desk\a-abc.xlsx 已保存
b-


img

我想要达到的结果

怎么改?
我想把abc.xlsx的一张图片,复制粘贴到两个新表(a-abc.xlsx,b-abc.xlsx)里面
a-abc.xlsx 保存了,
但是b-abc.xlsx保存不到

改成这样就行了,。如果问题解决,点击一下采纳谢谢:

import openpyxl
for i in ['a-','b-']:
    filename = r"F:\desk\abc.xlsx"
    book = openpyxl.load_workbook(filename)
    sh = book['Sheet1']
    for image in sh._images:
        book2 = openpyxl.Workbook()
        sh2 = book2.active
        sh2.add_image(image)
        filename2="F:\desk{}abc.xlsx".format(i)
        book2.save(filename2)
        print(filename2,'已保存')

方便发下数据看看吗?

或者这样试试

import openpyxl

filename=r"F:\desk\abc.xlsx"
book = openpyxl.load_workbook(filename)
sh = book['Sheet1']
prefix = ['a-','b-']

for i, image in enumerate(sh._images):
    book2 = openpyxl.Workbook()
    sh2 = book2.active
    sh2.add_image(image)
    filename2="F:\desk{}abc.xlsx".format(prefix[i])
    book2.save(filename2)
    print(filename2,'已保存')