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())
我想用下面的代码读取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())