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

使用xlwings打开工作簿报错求助:路径优化后代码运行异常

解决xlwings相对路径打开工作簿报错的问题

首先,你的思路完全没问题——用相对路径替代硬编码绝对路径确实能提升脚本的可移植性,但问题出在os.getcwd()的行为上:它返回的是你运行脚本时的当前工作目录,而不是脚本文件本身所在的目录。举个例子:如果你的脚本在C:\Projects\Tool里,但你在C:\Users\YourName目录下通过命令行运行python C:\Projects\Tool\script.py,那os.getcwd()返回的是C:\Users\YourName,自然找不到目标Excel文件。

下面是几种可靠的解决方法,按推荐程度排序:

方法1:获取脚本所在目录(最推荐)

用__file__变量获取脚本的绝对路径,再提取目录部分,这样不管你从哪里运行脚本,都能精准定位到和脚本同目录的Excel文件:

import xlwings as xw
import os

# 获取脚本文件所在的目录
script_dir = os.path.dirname(os.path.abspath(__file__))
# 安全拼接路径(自动处理反斜杠/斜杠的兼容问题)
std_path_str = os.path.join(script_dir, 'EG_ReviewSTD_HN.xlsx')
std_wb = xw.Book(std_path_str)

如果你用Python 3.4+,也可以用更简洁直观的pathlib(面向对象的路径操作,可读性更强):

import xlwings as xw
from pathlib import Path

script_dir = Path(__file__).parent.resolve()
std_path = script_dir / 'EG_ReviewSTD_HN.xlsx'
std_wb = xw.Book(std_path)

方法2:确保运行脚本时的工作目录是脚本所在目录

如果你不想修改代码,也可以在运行脚本前手动切换到脚本所在目录:

  • Windows命令行:先执行cd C:\Path\To\Your\Script\Folder,再运行python script.py
  • IDE(比如VS Code、PyCharm):可以在运行配置里设置「工作目录」为脚本所在的文件夹

不过这种方法灵活性较差,一旦换了运行方式就容易出问题,不如方法1可靠。

调试小技巧

如果还是不确定路径哪里出错,可以先打印出最终生成的路径,直观对比排查:

print(std_path_str)  # 使用pathlib时则打印print(std_path)

另外还要确认两个细节:

  • Excel文件确实和脚本在同一个文件夹里(注意文件名大小写,Windows虽然不区分,但保持一致能避免潜在问题)
  • 脚本有访问该文件的权限(不过你用绝对路径能打开,这个问题概率极低)

内容的提问来源于stack exchange,提问作者Đức Trường Đặng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 15:12:36