我想设计一个函数如下:

 explore("jpg", "../test_media")

outputsample:

{'../test_media':1,'../test_media/travel_photos':3}

也就是说,函数的输出应该是一个字典,其中每个键是文件夹的地址,每个值是该文件夹中直接具有该扩展名的文件数.如果文件夹中不包含我们想要的文件,则不应在字典中.

我自己写的代码:

import os


def explore(ttype, address):
    
    list_dir = list(os.walk(address))
    directoirs = dict()
    for x in list_dir:
        count = 0
        if x[2]:
            for y in x[2]:
                t = y.split('.')
                if t[1].lower() == ttype:
                    count += 1
        if count:
            directoirs[str(x[0])] = count

    return directoirs

但它不能提供所需的输出

推荐答案

您可以这样编辑函数:

def explore(extension, addr):
    result = dict()
    for obj in os.walk(addr):
        for name in obj[2]:
            if "." in name and name.split('.')[-1].lower() == extension.lower():
                try:
                    result[obj[0]] += 1
                except KeyError:
                    result[obj[0]] = 1
    return result

sample output:

   >>> explore("jpg", "../test_media")
{'../test_media':1,'../test_media/travel_photos':3}
>>> explore("txt", "../test_media/travel_photos")
{'../test_media/travel_photos':1}
>>> explore("mkv", "../test_media/")
{}

 Directory
     ├── source
        │     └──Explorer.py
        │
        test_media
        ├── IMG_2235.jpg
        ├── travel_photos
        │   ├── 2018-11-09_11-27-14.3gP
        │   ├── IMG_20171017_052418.jpg
        │   ├── 20180311_214539.JPG
        │   ├── IMG_2237.jpg   
        │   └── note.tXt
        └── vid1
            ├── images
            │   └── JPG
            └── VID_20170425_184731.mp4
  

Python相关问答推荐

如何使用OpenGL使球体遵循Python中的八样路径?

替换现有列名中的字符,而不创建新列

ModuleNotFoundError:没有模块名为x时try 运行我的代码''

Polars map_使用多处理对UDF进行批处理

仅使用预先计算的排序获取排序元素

Python协议不兼容警告

用0填充没有覆盖范围的垃圾箱

如果服务器设置为不侦听创建,则QWebSocket客户端不连接到QWebSocketServer;如果服务器稍后开始侦听,则不连接

使用xlsxWriter在EXCEL中为数据帧的各行上色

如何关联来自两个Pandas DataFrame列的列表项?

递归链表反转与打印语句挂起

Pandas:使列中的列表大小与另一列中的列表大小相同

在不降低分辨率的情况下绘制一组数据点的最外轮廓

使代码更快地解决哪个字母代表给定公式中的哪个数字

如何强制SqlalChemy指向与连接字符串的默认架构不同的架构

如何在Python中使用Polars向SQLite数据库写入数据?

有没有更快的方法来快速修改、更新和排序列表或词典?

如何根据预定义的模板重新排序YAML键并维护注释?

将Python代码转换为C语言的挑战:实现用于校验和计算的Luhn算法

如何在0.20.7之前的版本中实现POLARS';之前的`vot()‘功能?