Python在读取行时进入无限循环

时间:2019-03-09 15:17:40

标签: python while-loop readline

我想用以下代码读取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代码

2 个答案:

答案 0 :(得分:1)

由于传感器在循环中未更改,请尝试此操作

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()

答案 1 :(得分:1)

如评论中所述,问题是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())