我正在尝试在某个目录中打印文件扩展名以及每个扩展名的计数。
这就是我到目前为止......
import os
import glob
os.chdir(r"C:\Python32\test")
x = glob.glob("*.*")
for i x:
print(i)
>>> file1.py
file2.py
file3.py
file4.docx
file5.csv
所以我被卡住了,我需要我的整体输出...
py 3
docx 1
csv 1
我试过使用像i.split(“。”)这样的东西,但是我被卡住了。我想我需要将扩展名放在列表中,然后计算列表,但这就是我遇到问题的地方。
感谢您的帮助。
答案 0 :(得分:7)
使用os.path.splitext查找扩展程序,并使用collections.Counter计算扩展程序的类型。
import os
import glob
import collections
dirpath = r"C:\Python32\test"
os.chdir(dirpath)
cnt = collections.Counter()
for filename in glob.glob("*"):
name, ext = os.path.splitext(filename)
cnt[ext] += 1
print(cnt)
答案 1 :(得分:2)
您可以使用collections.Counter
from collections import Counter
import os
ext_count = Counter((ext for base, ext in (os.path.splitext(fname) for fname in your_list)))
答案 2 :(得分:0)
此实现将计算每个扩展的出现次数并将其放入变量c中。通过在计数器上使用most_common方法,它将首先打印出您在示例输出中最常用的扩展名
from os.path import join, splitext
from glob import glob
from collections import Counter
path = r'C:\Python32\test'
c = Counter([splitext(i)[1][1:] for i in glob(join(path, '*'))])
for ext, count in c.most_common():
print ext, count
<强>输出强>
py 3
docx 1
csv 1
答案 3 :(得分:0)
import collections
import os
cnt = collections.Counter()
def get_file_format_count():
for root_dir, sub_dirs, files in os.walk("."):
for filename in files:
name, ext = os.path.splitext(filename)
cnt[ext] += 1
return cnt
print get_file_format_count()