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

时间:2018-06-02 13:54:15

标签: python python-3.x glob python-os

问候我有文件夹命名' 10k'其中包含名为1_left 1_right的图片,如下所示。

enter image description here

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

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


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

我打印时输出很奇怪 它不是所需的名字 输出: enter image description here

请指导我。

2 个答案:

答案 0 :(得分:0)

如果没有更多信息,我只能猜出你想要打印的内容。

如果您想要的输出首先是1_left然后是1_right,依此类推,就像它出现在您的文件夹中一样,原因是python以不同于操作系统的方式对文件进行排序。

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

答案 1 :(得分:0)

@ vidit02100 ,问题非常有趣。我从您的代码中了解到,您只想打印 10k 目录中的图像文件名称。

  

在图片中,您没有评论您在问题代码中评论的行。

     

如果你要显示完整的代码并告诉 10k 目录中的图片数量,那么对我来说帮助你会好得多。

     

如果 10k 内有+10000张图片,您的代码可能会以相反的顺序打印图像。请检查并告知我们。

✓据我所知, jpg jpeg & png 是最受欢迎的图片文件扩展名,以 g 结尾。

✓所以将所有这些扩展放在一个列表中,并使用另一个for循环迭代它并将代码放在其中。

  

如果我的建议不能满足您的需求,请发表评论。我会根据您提供的输入和输出更新我的答案。

✓这是您修改后的代码。

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)