我有一个函数来收集温度(来自文本文件的值),它使用一个部分预定义的路径。然而,如果温度传感器没有被加载(断开),有时路径不存在。如果路径不可用,如何设置条件或异常以跳过循环?
我想用continue,但我不知道该用什么条件。

def read_all():

    base_dir = '/sys/bus/w1/devices/'
    sensors=['28-000006dcc43f', '28-000006de2bd7', '28-000006dc7ea9', '28-000006dd9d1f','28-000006de2bd8']

    for sensor in sensors:

        device_folder = glob.glob(base_dir + sensor)[0]
        device_file = device_folder + '/w1_slave'

        def read_temp_raw():
            catdata = subprocess.Popen(['cat',device_file], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
            out,err = catdata.communicate()
            out_decode = out.decode('utf-8')
            lines = out_decode.split('\n')
            return lines

最佳答案

使用os.path.isfileos.path.isdir()进行检查。

for sensor in sensors:
    device_folders = glob.glob(base_dir + sensor)
    if len(device_folders) == 0:
        continue
    device_folder = device_folders[0]
    if not os.path.isdir(base_dir):
        continue
    device_file = device_folder + '/w1_slave'
    if not os.path.isfile(device_file)
        continue
    ....

07-24 19:07
查看更多