【问题标题】:(Python) - How to count number of files in a file with certain extension or name(Python) - 如何计算具有特定扩展名或名称的文件中的文件数
【发布时间】:2020-02-07 12:00:59
【问题描述】:

我是编程新手,我想知道您是否可以帮助我。

我的问题是,当文件夹中有很多不同类型的文件时,我想列出有多少具有特定扩展名或名称的文件。

例如,假设一个文件夹中有一堆不同类型的文件,我只想计算有多少个 jpg 文件。

我从其他人在 stackoverflow 上的问答中尝试了下面的代码,它确实显示了文件夹中所有 jpg 文件的名称,但没有显示有多少个 jpg 文件的数量。

import glob, os
filelist = os.listdir('D:\Train')
for file in filelist:
    if(file.endswith('jpg')):
        print(file)

另外,我想知道是否有一种方法可以计算名称中包含某些单词的文件。 ex) 计算文件夹中名称中包含“fire”的所有 jpg 文件(fire01.jpg、fire02.jpg 等)

非常感谢!

【问题讨论】:

标签: python count counting


【解决方案1】:

你可以像这个例子一样使用 glob

import glob, os
filelist = glob.glob('D:\Train\*.jpg')
print(len(filelist))
for file in filelist:
    print(file)

【讨论】:

    【解决方案2】:

    当然,如前面的答案所示,len(glob.glob(...)) 会告诉您有多少文件与 glob 匹配,如果您可以将您的要求重新表述为单个通配符模式。

    在一般情况下(例如,如果您想匹配 .png.jpeg.JPEG 等),只需在每次看到出现时增加一个变量。

    # Stylistic fix: don't combine imports
    import glob
    import os
    
    # This is our counter
    count = 0
    
    # Notice r'' raw string to preserve literal backslash
    for file in os.listdir(r'D:\Train'):
        if(file.endswith('jpg')):
            print(file)
            count += 1
    
    print('Total:', count)
    

    您也可以添加第二个变量fire_count;也许然后也重命名原始变量以保持一致性。

    total_count = 0
    fire_count = 0
    
    for file in os.listdir(r'D:\Train'):
        if(file.endswith('jpg')):
            print(file)
            total_count += 1
            if 'fire' in file:
                fire_count += 1
    
    print('Total:', total_count)
    print('Fire files:', fire_count)
    

    【讨论】:

      【解决方案3】:

      所以,我的路径 /tmp/test-dir 中有三个文件,file1.pdf、file2.pdf 和 file3.pdf

      您可以使用以下代码获取 pdf 文件的总数。

      import glob
      path_to_check = "/tmp/test-dir/"
      total_txt_files = len(glob.glob1(path_to_check,"*.pdf"))
      print(total_txt_files)
      

      输出

      3

      【讨论】:

        【解决方案4】:

        这可以通过 os.listdir() 函数来完成,它返回给定目录中所有文件名的列表,如下例所示:

        import os
        print(len(os.listdir('D:\\Train\\'))
        

        由于您只对以图像结尾的文件感兴趣,因此您可以添加理解列表并仅保留以“.jpg”结尾的文件

        print(len([x for x in os.listdir('D:\\Train\\') if x[-4:] == '.jpg']))
        

        【讨论】:

        • print(len([x for x in os.listdir(PATH_SCREEN) if x[-4:] == '.jpg']))
        猜你喜欢
        • 2010-11-22
        • 2021-02-14
        • 2011-06-30
        • 1970-01-01
        • 2011-03-13
        • 1970-01-01
        • 1970-01-01
        • 2016-12-18
        • 1970-01-01
        相关资源
        最近更新 更多