为何openpyxl加载文件需用绝对路径?本地路径报错求助
问题解答
其他人完全可以通过本地相对路径正常打开xlsx文件,你的情况属于个例,核心原因大概率是当前Python运行环境的工作目录异常,或者脚本执行路径的问题,和文件本身、openpyxl的通用用法无关。
具体分析:
- 工作目录不匹配:你以为脚本的当前工作目录是文件所在的目录,但实际运行时可能不是(比如VS Code的工作目录被修改、脚本从其他路径启动)。这时用相对路径
'output.xlsx'会指向错误的位置,读取到空内容或非目标文件,触发badzipfile错误。而你用绝对路径指定后,直接定位到了正确的文件,所以能正常加载。 - 多余的open操作:你现在的代码里
open(os.path.join(path, 'output.xlsx'), 'r')这步完全没必要,openpyxl的load_workbook可以直接接收绝对路径字符串,改成wb = load_workbook(os.path.join(path, 'output.xlsx'))就能正常运行。 - 环境或权限小概率问题:比如文件曾被异常锁定,导致相对路径读取时内容异常,但你用
open(filename)能正常读取,这个可能性很低。
验证方法:
在脚本开头添加一行代码打印当前工作目录:
import os print(os.getcwd())
如果输出的路径不是C:/Users/BigGuy/Documents/VSCode/Project/,就说明工作目录不对,要么用os.chdir("C:/Users/BigGuy/Documents/VSCode/Project/")切换到目标目录,要么继续使用绝对路径。
内容的提问来源于stack exchange,提问作者user3451478
相关产品推荐
相关产品推荐

