鱼C论坛

 找回密码
 立即注册
查看: 6989|回复: 8

[已解决]求助:另一个程序正在使用此文件,进程无法访问

[复制链接]
发表于 2023-8-24 15:22:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码如下:
  1. import xlrd
  2. import os
  3. import openpyxl

  4. p=r'xx文件夹路径xx'
  5. p1=os.listdir(p)
  6. wb=openpyxl.load_workbook('文件路径')
  7. ws=wb.worksheets[0]
  8. for i in p1:
  9.     pi=p+'/'+i
  10.     wb1=xlrd.open_workbook(pi)
  11.     ws1=wb1.sheet_by_index(0)
  12.     rows=ws1.nrows
  13.     for j in range(rows):
  14.         ws.append(ws1.row_values(j))
  15. wb.save('文件路径')
复制代码


提示:
MemoryError
Exception ignored in atexit callback: <function _openpyxl_shutdown at 0x000002364C56FF60>
Traceback (most recent call last):
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\worksheet\_writer.py", line 32, in _openpyxl_shutdown
    os.remove(path)
PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。: 'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\openpyxl.fd956qxi'
最佳答案
2023-8-24 15:22:46
另一个程序正在使用此文件,进程无法访问解决方案

这个错误提示说明在保存Excel文件时,该文件被另一个程序占用,导致无法访问。这可能是由于你的代码没有正确关闭之前打开的Excel文件所导致的。

为了解决这个问题,你可以在处理完Excel文件后,使用wb1.close()关闭已打开的Excel文件。此外,如果你使用了xlrd库和openpyxl库来分别读取和写入Excel文件,建议全部使用openpyxl库来进行操作,以避免不必要的麻烦。

下面是修改后的代码:
  1. import os
  2. import openpyxl
  3. p = r'xx文件夹路径xx'
  4. p1 = os.listdir(p)
  5. wb = openpyxl.load_workbook('文件路径')
  6. ws = wb.worksheets[0]
  7. for i in p1:
  8.     pi = p + '/' + i
  9.     wb1 = openpyxl.load_workbook(pi)
  10.     ws1 = wb1.worksheets[0]
  11.     rows = ws1.max_row
  12.     for j in range(1, rows + 1):
  13.         row_values = [ws1.cell(row=j, column=c).value for c in range(1, ws1.max_column + 1)]
  14.         ws.append(row_values)
  15.     wb1.close()
  16. wb.save('文件路径')
  17. wb.close()
复制代码

在修改后的代码中,我们使用openpyxl库加载和操作Excel文件。首先,我们通过openpyxl.load_workbook方法加载主文件,并创建工作表对象ws。然后,我们遍历文件夹中的每个文件,加载每个文件并将数据追加到主文件的工作表中。在每次处理完一个文件后,我们使用wb1.close()关闭已打开的Excel文件。

最后,我们使用wb.save()保存主文件,并使用wb.close()关闭主文件。

这样修改后的代码应该能够解决你遇到的问题。希望对你有所帮助!如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-8-25 10:38:07 | 显示全部楼层
琅琊王朝 发表于 2023-8-25 10:22
根据你提供的错误信息,出现了两个问题:

1. `MemoryError`:这个错误表示内存不足,导致程序无法分配所需 ...

谢谢你详细的回复,优化内存我做过了,xlrd没有close方法,用释放,但是不管用。文件占用这个也没有也可能是我找不出来。增加可用内存也做了,没用。
最后还是老老实实用openpyxl读取算了,这样可用遍历一个表之后可以直接close。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-27 02:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表