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

如何解决glob.glob调用引发的IndexError: list index out of range错误?

解决 IndexError: list index out of range(DS18B20传感器路径匹配问题)

嘿,这个错误我太熟了——本质就是你的代码里glob.glob(base_dir+'28*')没有找到任何匹配的设备文件夹,你直接用[0]去取空列表的第一个元素,自然就触发了索引越界错误。这种情况大多和DS18B20温度传感器的驱动、硬件连接或者树莓派配置有关,下面给你一步步排查和解决的方案:

先搞懂错误根源

Traceback (most recent call last): File "/home/pi/codes/myprog.pyc", line 11, in device_folder = glob.glob(base_dir+'28*')[0] IndexError: list index out of range

这段报错明确告诉你:glob.glob(base_dir+'28*')返回了一个空列表,没有找到任何以28开头的文件夹(DS18B20传感器的设备目录默认在/sys/bus/w1/devices/下,命名都是28开头)。

一步步解决问题

1. 检查1-Wire驱动是否加载

先手动加载驱动试试,在终端执行这两个命令:

sudo modprobe w1-gpio
sudo modprobe w1-therm

然后查看传感器目录:

ls /sys/bus/w1/devices/

如果输出里有28-xxxxxxxxx格式的文件夹,说明驱动没问题,那问题可能在硬件或者代码;如果没有,继续往下排查。

2. 确认树莓派的1-Wire接口已启用

很多时候默认是关闭的,需要手动开启:

  • 终端输入sudo raspi-config
  • 选择 Interface Options -> 1-Wire
  • 选择启用(Enable),然后重启树莓派
    重启后再重复第一步的驱动加载和目录查看操作。

3. 排查硬件连接问题

DS18B20的连接有几个关键点,错一个都不行:

  • VCC引脚接树莓派的3.3V(别接5V,容易烧传感器)
  • GND引脚接树莓派的GND
  • DATA引脚接树莓派的GPIO4(物理引脚7),必须串联一个4.7kΩ的上拉电阻到3.3V(这是最容易忽略的点,没有上拉电阻传感器根本无法通信)
    检查完连接后,重新上电再看设备目录是否出现。

4. 修改代码避免硬取索引

就算前面的问题都解决了,也可能偶尔出现传感器断开的情况,所以代码里要做容错处理,不要直接用[0]:

import glob

base_dir = '/sys/bus/w1/devices/'
# 先获取所有匹配的设备文件夹
device_folders = glob.glob(base_dir + '28*')

if not device_folders:
    print("错误:未找到DS18B20设备,请检查驱动和硬件连接!")
    # 可以在这里添加重试逻辑或者退出程序
    exit(1)
else:
    # 取第一个设备文件夹
    device_folder = device_folders[0]
    # 继续后续的温度读取逻辑

这样代码就不会直接崩溃,还能给出明确的提示信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:39:19