You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Python读取被占用Excel文件时报PermissionError的问题

读取被独占打开Excel文件的解决方案

核心逻辑

Excel文件被用户编辑时会被加独占锁,直接读取原文件会触发PermissionError。PowerQuery可以正常读取的原因是它会自动生成文件的临时副本再读取,我们可以直接模拟这个逻辑,同时优化读取效率解决PowerQuery过慢的问题。

优化后可直接运行的代码

import os
import pandas as pd
import shutil
import tempfile

# 替换为你的Excel文件所在文件夹路径
transfolder = r"你的文件夹路径"
# 用列表存储分块数据,比反复append效率高数十倍
df_list = []

for filename in os.listdir(transfolder):
    # 只处理标准Excel格式,自动跳过Office生成的临时锁文件
    if not filename.lower().endswith(('.xlsx', '.xls', '.xlsb')) or filename.startswith('~$'):
        continue
    src_path = os.path.join(transfolder, filename)
    
    try:
        # 创建自动销毁的临时目录
        with tempfile.TemporaryDirectory() as temp_dir:
            # 复制原文件到临时目录,复制操作不受独占锁限制
            temp_path = os.path.join(temp_dir, filename)
            shutil.copy2(src_path, temp_path)
            # 读取临时文件数据
            current_df = pd.read_excel(temp_path, sheet_name='Main')
            df_list.append(current_df)
            print(f"读取完成:{filename}")
    except Exception as e:
        print(f"读取失败:{filename},错误信息:{str(e)},已跳过该文件")

# 合并所有数据为最终dataframe
transdf = pd.concat(df_list, ignore_index=True)

额外说明

  • 该方案跨Windows、Mac、Linux平台可用,不需要依赖本地安装的Office组件
  • 读取效率远高于PowerQuery,适合大文件批量处理场景
  • 增加了异常捕获逻辑,单个文件读取失败不会中断整个合并流程

内容的提问来源于stack exchange,提问作者Sn4k3Ch4rm3r

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:06:02