为什么连接变量 'new_path' 不能工作,而整个字符串 'full_path' 可以

Why can’t the concatenated variable 'new_path' work but the whole string 'full_path' can

我试图弄清楚文本文件中以名称存储的某些图像是否存在于特定图像文件夹中。

文本文件看起来像这样(包括 1k 行):

4916849840_43930a0979_o.png

331595384_492146dbf3_k.png

13517809023_f49228b3ec_o.png

所以我写了这样的代码:

import os

txt_path = '/Users/owner/Desktop/360_dataset_3k/train/train_3k_1.txt'
images_path = '/Users/owner/Desktop/360_dataset_3k/360_512_3k_1/'
full_path = '/Users/owner/Desktop/360_dataset_3k/360_512_3k_1/27107804622_984dbb2181_o.png'

f = open(txt_path,"r")
lines = f.readlines()
for line in lines:
    new_path = os.path.join(images_path, line)
    print(new_path)
    if os.path.exists(new_path):
        print("True.\n")
    else:
        print("False.\n")

然而,输出是无限的False。 但是,当我在这里替换 new_path

if os.path.exists(new_path):
        print("True.\n")

变量 full_path 是一行一行创建的 new_path 的打印。

if os.path.exists(full_path):
        print("True.\n")

输出是正确!!!

经过相当繁琐的检查后,发现它们确实存在于图像文件夹中。 有人可以告诉我发生了什么事吗?非常感谢。

调用文件对象的readlines()方法时,每行末尾都有一个换行符('\n')。您需要在加入路径之前去除线条。

代码:

f = open(txt_path,"r")
lines = f.readlines()
for line in lines:
    line = line.strip()  #Remove whitespace
    new_path = os.path.join(images_path, line)
    print(new_path)
    if os.path.exists(new_path):
        print("True.\n")
    else:
        print("False.\n")

任务完成后也关闭文件对象 f.close()