Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python计算文件扩展名_Python - Fatal编程技术网

Python计算文件扩展名

Python计算文件扩展名,python,Python,我试图打印某个目录中的文件扩展名以及每个扩展名的计数 这就是我目前所拥有的 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 cs

我试图打印某个目录中的文件扩展名以及每个扩展名的计数

这就是我目前所拥有的

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(“.”)的东西,但我被卡住了。我想我需要把扩展放在一个列表中,然后计算列表,但这就是我遇到问题的地方

感谢您的帮助。

用于查找扩展名,并用于计算扩展名的类型

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)

您可以使用
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)))

此实现将统计每个扩展的出现次数,并将其放入变量c中。通过在计数器上使用最常用的方法,它将首先打印最频繁的扩展,正如您在示例输出中所做的那样

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

创建一个新的空字典,如果扩展名不存在,则添加一个新条目并将值设置为1,如果扩展名已存在,则增量为1您确定没有运行上述代码的
SyntaxError
?可能重复
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()