Python while读行时进入死循环

Python while enters an infinite loop when reading lines

我想用下面的代码读取DS18B20传感器数据:

filepath = "/sys/bus/w1/devices/w1_bus_master1/w1_master_slaves"

with open(filepath) as fp:
    sensor=fp.readline()
    while sensor:
        print("Sensor: {}".format(sensor.strip()))
        with open("/sys/bus/w1/devices/" + sensor.strip() + "/w1_slave") as fp1:
            sensor_data = fp1.read()
            print(sensor_data.strip())
    sensor=fp.readline()

问题是 while 循环永远不会进入下一行,一直在第一行循环。

我在这里错过了什么?

PS。我是 python 的新手,这是我的第一个 python 代码

因为传感器在循环中没有改变,试试这个

filepath = "/sys/bus/w1/devices/w1_bus_master1/w1_master_slaves"

with open(filepath) as fp:
    sensor = fp.readline()
        while (sensor):
            print("Sensor: {}".format(sensor.strip()))
            with open("/sys/bus/w1/devices/" + sensor.strip() + "/w1_slave") as fp1:
                sensor_data = fp1.read()
                print(sensor_data.strip())
            sensor=fp.readline()

正如评论中所讨论的,问题是 sensor 永远不会在循环内更新。它不断遍历第一个读取值。这可以通过缩进代码的最后一行来纠正。

我建议使用 for 循环。当我们简单地遍历文件处理程序时,我们遍历文件中的行。

with open(filepath) as fp:
    for sensor in fp:
        print("Sensor: {}".format(sensor.strip()))
        with open("/sys/bus/w1/devices/" + sensor.strip() + "/w1_slave") as fp1:
            sensor_data = fp1.read()
            print(sensor_data.strip())