(Python) - 如何计算具有特定扩展名或名称的文件中的文件数
(Python) - How to count number of files in a file with certain extension or name
我是编程新手,我想知道您是否可以帮助我。
我的问题是当文件夹中有很多不同类型的文件时,我想列出有多少个具有特定扩展名或名称的文件。
例如,假设文件夹中有一堆不同类型的文件,我只想计算有多少个 jpg 文件。
我在 Whosebug 上尝试了其他人的问答中的以下代码,它确实显示了文件夹中所有 jpg 文件的名称,但没有显示有多少 jpg 文件的数量。
import glob, os
filelist = os.listdir('D:\Train')
for file in filelist:
if(file.endswith('jpg')):
print(file)
此外,我想知道是否有一种方法可以计算名称中包含某些单词的文件。
例如)计算文件夹中名称中包含 'fire' 的所有 jpg 文件(fire01.jpg、fire02.jpg 等等)
非常感谢!
你可以像这个例子一样使用 glob
import glob, os
filelist = glob.glob('D:\Train\*.jpg')
print(len(filelist))
for file in filelist:
print(file)
当然,如前面的回答所示,如果您可以将您的要求重新表述为单个通配符模式,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)
所以,我的路径 /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
可以使用 os.listdir() 函数来完成,该函数 returns 给定目录中所有文件名的列表,如本例所示:
import os
print(len(os.listdir('D:\Train\'))
由于您只对以图片结尾的文件感兴趣,您可以添加一个理解列表,只保留以“.jpg”结尾的文件
print(len([x for x in os.listdir('D:\Train\') if x[-4:] == '.jpg']))
我是编程新手,我想知道您是否可以帮助我。
我的问题是当文件夹中有很多不同类型的文件时,我想列出有多少个具有特定扩展名或名称的文件。
例如,假设文件夹中有一堆不同类型的文件,我只想计算有多少个 jpg 文件。
我在 Whosebug 上尝试了其他人的问答中的以下代码,它确实显示了文件夹中所有 jpg 文件的名称,但没有显示有多少 jpg 文件的数量。
import glob, os
filelist = os.listdir('D:\Train')
for file in filelist:
if(file.endswith('jpg')):
print(file)
此外,我想知道是否有一种方法可以计算名称中包含某些单词的文件。 例如)计算文件夹中名称中包含 'fire' 的所有 jpg 文件(fire01.jpg、fire02.jpg 等等)
非常感谢!
你可以像这个例子一样使用 glob
import glob, os
filelist = glob.glob('D:\Train\*.jpg')
print(len(filelist))
for file in filelist:
print(file)
当然,如前面的回答所示,如果您可以将您的要求重新表述为单个通配符模式,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)
所以,我的路径 /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
可以使用 os.listdir() 函数来完成,该函数 returns 给定目录中所有文件名的列表,如本例所示:
import os
print(len(os.listdir('D:\Train\'))
由于您只对以图片结尾的文件感兴趣,您可以添加一个理解列表,只保留以“.jpg”结尾的文件
print(len([x for x in os.listdir('D:\Train\') if x[-4:] == '.jpg']))