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

Python批量清理Excel空行报错:文件存在却提示找不到

问题

我尝试运行一段Python代码,遍历指定文件夹中的Excel文件并删除空行,但运行时出现错误:循环中的当前文件明明能被打印出来,加载时却提示找不到。错误信息显示程序在脚本所在目录而非指定目标文件夹中查找文件。附上代码及报错信息:

import os
from spire.xls import *
from spire.common import *

# 需要处理的目录:
path = 'C:/Users/paulina.rios/Desktop/Teacher Sheets - Copy (2) - Copy/'

# 创建包含目录文件名的列表
list = os.listdir(path)

# 遍历目录中的每个文件
for file in list:
    print(file)

  # 指定输入和输出文件路径
    inputFile = file
    outputFile = "Edited.xlsx"

  # 创建Workbook实例
    workbook = Workbook()

  # 加载Excel文件
    workbook.LoadFromFile(inputFile)

  # 获取第一个工作表
    sheet = workbook.Worksheets[0]

  # 从工作表中删除空行
    for i in range(sheet.Rows.Length - 1, -1, -1):
        if sheet.Rows[i].IsBlank:
            sheet.DeleteRow(i + 1)

# 保存结果文件
    workbook.SaveToFile(outputFile, ExcelVersion.Version2013)
    workbook.Dispose()

报错信息:

C:\Users\paulina.rios\PycharmProjects\python Project\venv\Scripts\python.exe "C:\Users\paulina.rios\AppData\Roaming\JetBrains\PyCharmCE2023.1\scratches\this one.py"
10175.xlsx
Traceback (most recent call last):
  File "C:\Users\paulina.rios\AppData\Roaming\JetBrains\PyCharmCE2023.1\scratches\this one.py", line 24, in <module>
    workbook.LoadFromFile(inputFile)
  File "C:\Users\paulina.rios\PycharmProjects\python Project\venv\lib\site-packages\plum\function.py", line 642, in __call__ 
    return self.f(self.instance, *args, **kw_args)
  File "C:\Users\paulina.rios\PycharmProjects\python Project\venv\lib\site-packages\plum\function.py", line 592, in __call__ 
    return _convert (method (*args, **kw_args), return_type)
  File "C:\Users\paulina.rios\PycharmProjects\pythonProject\venv\lib\site-packages\spire\xls\Workbook.py", line 602, in LoadFromFile 
    raise ArgumentError(intPtr.typeName)
ctypes.ArgumentError: IO_FileNotFound_FileName, C:\Users\paulina.rios\AppData\Roaming\JetBrains\PyCharmCE2023.1\scratches\10175.xlsx

Process finished with exit code 1

解决方法

问题根源

os.listdir(path) 返回的只是文件夹内的纯文件名,不是完整路径。直接用该文件名加载文件时,Python会默认在当前脚本的运行目录下查找,而非你指定的目标文件夹,因此出现文件找不到的错误。

修改后的代码

使用os.path.join()将目标文件夹路径与文件名拼接成完整路径,同时优化输出文件名避免重名覆盖:

import os
from spire.xls import *
from spire.common import *

# 需要处理的目录
target_path = 'C:/Users/paulina.rios/Desktop/Teacher Sheets - Copy (2) - Copy/'

# 遍历目录中的每个文件
for filename in os.listdir(target_path):
    # 仅处理xlsx格式文件,过滤非Excel文件
    if not filename.endswith('.xlsx'):
        continue
    print(filename)

    # 拼接完整的输入文件路径
    input_file = os.path.join(target_path, filename)
    # 生成不重复的输出文件名(原文件名前加前缀)
    output_file = f"Edited_{filename}"

    # 创建Workbook实例
    workbook = Workbook()

    # 加载Excel文件(使用完整路径)
    workbook.LoadFromFile(input_file)

    # 获取第一个工作表
    sheet = workbook.Worksheets[0]

    # 从工作表中删除空行
    for i in range(sheet.Rows.Length - 1, -1, -1):
        if sheet.Rows[i].IsBlank:
            sheet.DeleteRow(i + 1)

    # 保存结果文件
    workbook.SaveToFile(output_file, ExcelVersion.Version2013)
    workbook.Dispose()

额外优化说明

  • 增加文件后缀判断,避免遍历到非Excel文件引发错误
  • 修改输出文件名规则,防止多文件处理时被同名文件覆盖
  • 变量名更规范(如避免使用list这类内置函数名作为变量名)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 02:57:13