首页 > 解决方案 > 如何在不使用“追加”的情况下使用 python 将脚本的“打印”发送到列表中?

问题描述

我想将脚本中的所有“打印”发送到列表中。我有“功能”和“循环”。您会注意到一些“单词”重复,例如:Labels、Model、Image、Time(ms)、Score、TPU_temp(°C)。

我想过使用“追加”,但我需要每个值的“单词”,因为我会将它们发送到数据库中。

我的代码看起来像这样

def getInterpreter(root, files):
    for file in files:
        filepath = os.path.join(root, file)
        if filepath.endswith(".tflite"):
            print("Model:", file) <---------------------------HERE IS A PRINT
            print("\n") <--------------------------IT IS OKAY IF THIS GOES IN THE LIST 
            interpreter = make_interpreter(filepath)
            interpreter.allocate_tensors()
            return interpreter   
    return None



def getImage(dir_path, image_file):
    for file in image_file:#all files within the current path
         if re.match('.*\.jpg|.*\.bmp|.*\.png', file): 
                filepath = os.path.join(dir_path, file)
                print("Image:", file)   <-------------HERE IS A PRINT
                print("\n")         <------------ANOTHER PRINT
                return filepath
    return None


def main():
    subprocess.run('/usr/bin/snapshot', shell=False)           
    image_file = os.listdir(rootdir) 
    
    for root, subdirs, files in os.walk(rootdir):          
        labels = getLabel(root, files)
        interpreter = getInterpreter(root, files)
       
        if interpreter is not None:
            size = classify.input_size(interpreter)

            for _ in range(count):
                start = time.perf_counter()
                interpreter.invoke()
                inference_time = time.perf_counter() - start
                classes = classify.get_output(interpreter, top_k, threshold)
                print('Time(ms):', '%.1f' % (inference_time * 1000)) <----ANOTHER PRINT!
            print("\n")                                  <--------------ANOTHER PRINT


if __name__ == '__main__':
    main()


这是执行我的脚本后打印的内容

Labels: imagenet_labels.txt

Model: efficientnet-edgetpu-S_quant_edgetpu.tflite

Image: img0000.jpg

*The first inference on Edge TPU is slow because it includes loading the model i                                                                                                             nto Edge TPU memory*
Time(ms): 23.1
Time(ms): 6.1


Inference: nematode, nematode worm, roundworm
Score: 0.02734

TPU_temp(°C): 61.55
#####################################

Labels: imagenet_labels.txt

Model: efficientnet-edgetpu-M_quant_edgetpu.tflite

Image: img0000.jpg

*The first inference on Edge TPU is slow because it includes loading the model i                                                                                                             nto Edge TPU memory*
Time(ms): 28.9
Time(ms): 10.6


Inference: wall clock
Score: 0.01953

TPU_temp(°C): 61.55
#####################################

标签: pythonlist

解决方案


我不确定我是否完全理解这个问题,但您能否通过将多行合并为一行来附加到列表中。

例如

使用 append 和 f 字符串加入一行。

newlist.append(f'Model:{file}\n')

如果我误解了您的问题,请告诉我。


推荐阅读