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

Python中调用open()读取oui.txt失败问题求助

解决PySimpleGUI工具中OUI文件找不到的问题

核心问题是运行时的工作目录和脚本所在目录不一致——单独跑查询脚本时,当前工作目录就是脚本所在的文件夹,但整合到PySimpleGUI工具后,程序的工作目录可能变成你启动工具的路径(比如桌面、下载文件夹),导致找不到同目录的oui.txt。

给你几个靠谱的解决步骤:

1. 用脚本绝对路径拼接OUI文件路径

不要依赖当前工作目录,直接获取你的工具脚本所在的文件夹,再拼接oui.txt的路径,这是最稳妥的方法:

用Path模块(推荐)

from pathlib import Path

# 获取当前脚本所在目录的绝对路径
script_folder = Path(__file__).parent.resolve()
# 拼接oui.txt的完整路径
oui_file = script_folder / "oui.txt"

# 测试读取与查询逻辑
try:
    with open(oui_file, "r") as f:
        # 提取测试MAC的OUI部分:90:DE:80 → 转成90-DE-80(适配oui.txt格式)
        test_mac = "90:DE:80:21:36:7E"
        oui_part = test_mac[:8].replace(":", "-").upper()
        # 遍历文件匹配OUI
        for line in f:
            if oui_part in line:
                print(f"厂商信息:{line.strip()}")
                break
except FileNotFoundError:
    print(f"找不到OUI文件,实际查找路径:{oui_file}")

用os模块写法

import os

script_folder = os.path.dirname(os.path.abspath(__file__))
oui_file = os.path.join(script_folder, "oui.txt")

2. 打印路径快速排查

可以在代码里加一行打印,确认程序实际在找哪个路径的oui.txt,方便定位问题:

print(f"当前尝试读取的OUI文件路径:{oui_file}")

如果打印的路径不是你预期的脚本目录,就说明工作目录确实不对,上面的绝对路径方法就能解决。

3. 打包工具时需包含oui.txt

如果你的工具是用PyInstaller打包成exe/app的,必须把oui.txt一起打包进去:

  • Windows下打包命令:pyinstaller --add-data "oui.txt;." your_tool.py
  • Mac/Linux下:pyinstaller --add-data "oui.txt:." your_tool.py
    这样打包后,程序运行时才能正确找到oui.txt文件。

测试你的MAC地址90:DE:80:21:36:7E,对应的OUI是90-DE-80,查询oui.txt应该能找到Hewlett Packard Enterprise的相关条目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 21:40:58