【问题标题】:Python - Read Excel files while file is openPython - 在文件打开时读取 Excel 文件
【发布时间】:2021-12-21 16:55:54
【问题描述】:

这里是 Python 新手。 我有一个文件夹,里面装满了我想读入数据框的 Excel 文件。以下代码效果很好,除非有人将数据输入其中一个 Excel 文件,否则我会收到“PermissionError: [Errno 13] Permission denied”消息。

transfolder = *folder where Excel files are located*
transfiles = os.listdir(transfolder)
transdf = pd.DataFrame()
df = pd.DataFrame()
for file in transfiles:
     df = pd.read_excel(os.path.join(transfolder,file), sheet_name = 'Main')
     transdf = transdf.append(df, ignore_index=True)

在任何特定时间都有几个人在 Excel 文件中输入数据,所以我不能让他们全部退出。有没有办法让它在文件打开时读取文件,比如 PowerQuery?我会使用 PQ,但文件太大而且速度太慢。

我已经尝试过了,但没有运气 - 我认为它适用于旧版本: pd.read_excel throws PermissionError if file is open in Excel

【问题讨论】:

    标签: python excel pandas dataframe


    【解决方案1】:

    当您想操作这些文件时,创建它们的本地副本,将它们读入您的数据框,然后删除本地副本。

    请注意,您将使用上次保存的版本,因此您可能没有使用最新版本,因为有人正在编辑文件。

    【讨论】:

      【解决方案2】:

      像往常一样,凌晨 3 点左右我得到了答案…… 我添加了一个过滤器来删除临时文件,如下所示:

      transfolder = *folder where Excel files are located*
      transfiles = os.listdir(transfolder)
      transdf = pd.DataFrame()
      df = pd.DataFrame()
      for file in transfiles:
           str = file
           if not str.startswith('~$'):
           df = pd.read_excel(os.path.join(transfolder,file), sheet_name = 'Main')
           transdf = transdf.append(df, ignore_index=True)
      

      到目前为止,工作就像一个魅力。

      【讨论】:

        猜你喜欢
        • 2012-10-05
        • 2019-11-08
        • 2019-01-05
        • 2013-09-03
        • 1970-01-01
        • 1970-01-01
        • 2014-05-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多