文件名与文件夹内的文件不匹配

File name not matching with files inside the folder

问候,我有一个名为“10k”的文件夹,其中包含名为 1_left 1_right 的图像,如下所示。

我的 python 代码打印文件夹中的文件名:

main_file = '10k'
path = os.path.join(main_file,'*g')
files = glob.glob(path)


#l='10k_left.jpeg'
for f1 in files:
    #print(os.path.basename(f1))
    fstr=str(f1)
    print(fstr)

打印时输出很奇怪 它没有所需的名称 输出 :

请指导我。

没有更多信息,我只能猜测你想要打印什么。

如果您想要的输出首先是 1_left 然后是 1_right 等等,就像它出现在您的文件夹中一样,原因是 python 将文件排序在不同的目录中比你 OS 做的还要多。

据我所知,files 只是一个列表。因此,您可以使用 sort 和自定义键(例如 files.sort(key=lambda x: int(x.split("_")[0])))自行对其进行排序。 这将按开头的数字对列表进行排序,字符串以外的数字将按照您可能期望的方式排序(因此首先是 1,然后是 2,依此类推)。

@vidit02100,问题真的很有意思。正如我从您的代码中了解到的那样,您只想打印 10k 目录中存在的图像文件的名称。

In image, you have not commented the lines which you have commented in the problem's code.

If you will show full code and tell about the number of images inside 10k directory then it would be much better for me to help you.

May be your code will be printing the images in reverse order if there will be +10000 images inside 10k. Please check and let me know.

✓ 据我所知,jpgjpegpng 是最受欢迎的图像以 g 结尾的文件扩展名。

✓ 因此,将所有这些扩展放在一个列表中,然后使用另一个 for 循环对其进行迭代并将您的代码放入其中。

Please comment if my suggestion doesn't satisfy your need. I will update my answer based on your provided inputs and outputs.

✓ 这是您修改后的代码。

main_file = '10k'
file_formats = ["png", "jpg", "jpeg"]

for file_format in file_formats:
    path = os.path.join(main_file, '*.' + file_format )
    files = glob.glob(path)

    for f1 in files:
        fstr = str(f1)
        print(fstr)