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

Python在读取行时进入无限循环,python,while-loop,readline,Python,While Loop,Readline,我想用以下代码读取DS18B20传感器数据: filepath=“/sys/bus/w1/devices/w1_-bus_-master1/w1_-master_-slaves” 打开(文件路径)作为fp时: 传感器=fp.readline() 而传感器: 打印(“传感器:{}”。格式(Sensor.strip()) 打开(“/sys/bus/w1/devices/”+sensor.strip()+“/w1_slave”)作为fp1: 传感器\数据=fp1.read() 打印(传感器\数据条()

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

filepath=“/sys/bus/w1/devices/w1_-bus_-master1/w1_-master_-slaves”
打开(文件路径)作为fp时:
传感器=fp.readline()
而传感器:
打印(“传感器:{}”。格式(Sensor.strip())
打开(“/sys/bus/w1/devices/”+sensor.strip()+“/w1_slave”)作为fp1:
传感器\数据=fp1.read()
打印(传感器\数据条())
传感器=fp.readline()
问题是while循环从不走到下一行,而是在第一行继续循环

我错过了什么


另外,我对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()

由于传感器在回路中没有改变,请尝试此操作

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

正如评论中所讨论的,问题是
传感器
在循环中从未得到更新。它不断循环通过第一个读取值。这可以通过缩进代码的最后一行来纠正

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

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

正如评论中所讨论的,问题是
传感器
在循环中从未得到更新。它不断循环通过第一个读取值。这可以通过缩进代码的最后一行来纠正

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

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

因为,
传感器
在循环内从未更新。它不断循环通过第一个读取值。可能缩进最后一行?是否应该在循环中?它在这里张贴的外部。因此,
sensor=fp.readline()
应该再缩进一次吗?是的,它现在可以工作了!感谢you@Austin,请将您的评论作为答案发布。因为,
传感器
在循环中从不更新。它不断循环通过第一个读取值。可能缩进最后一行?是否应该在循环中?它在这里张贴的外部。因此,
sensor=fp.readline()
应该再缩进一次吗?是的,它现在可以工作了!感谢you@Austin,请将您的评论作为回答。