带有 glob.iglob 函数的嵌套 for 循环将不起作用

问题描述 投票:0回答:1

我尝试在两个不同的目录中查找成对的文件。一个文件以 .anno 结尾,另一个以 .png 结尾。我试着找到它们并计算我有多少机器。所以我试过这个:

for AnnoFile in glob.iglob(f'annotations/**/*.anno', recursive=True):
    AnnoFile_name = Path(AnnoFile).stem
    print("1: " + AnnoFile_name)
    for CatFile in glob.iglob(f'categories/**/.png', recursive=True):
        CatFile_name = Path(CatFile).stem
        print("2: " + CatFile_name)
        CatFile_name = CatFile_name.replace("_visu", "")
        if AnnoFile == CatFile_name:
            print("Match found!")
            Counter = Counter + 1
print(Counter)

我试图先找到“.anno”-File,然后搜索匹配的.png 文件。 .png 文件的名称有一个后缀,这就是我用“”替换“_visu”的原因。我在控制台中看到的只是第一个 for 循环的打印。

python for-loop nested glob
1个回答
0
投票

我发现错误了。我忘记了.png 之前的'*'。所以它必须是:

for AnnoFile in glob.iglob(f'annotations/**/*.anno', recursive=True):
AnnoFile_name = Path(AnnoFile).stem
print("1: " + AnnoFile_name)
for CatFile in glob.iglob(f'categories/**/*.png', recursive=True):
    CatFile_name = Path(CatFile).stem
    print("2: " + CatFile_name)
    CatFile_name = CatFile_name.replace("_visu", "")
    if AnnoFile == CatFile_name:
        print("Match found!")
        Counter = Counter + 1
print(Counter)
© www.soinside.com 2019 - 2024. All rights reserved.