鱼C论坛

 找回密码
 立即注册
查看: 2796|回复: 9

[已解决]30讲课后习题1

[复制链接]
发表于 2016-11-2 14:26:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import os

all_files = os.listdir(os.curdir) # 使用os.curdir表示当前目录更标准
type_dict = dict()

for each_file in all_files:
    if os.path.isdir(each_file):
        type_dict.setdefault('文件夹', 0)
        type_dict['文件夹'] += 1
    else:
        ext = os.path.splitext(each_file)[1]  //这里的splitext()方法后面为什么有个【1】?
        type_dict.setdefault(ext, 0)
        type_dict[ext] += 1

for each_type in type_dict.keys():
    print('该文件夹下共有类型为【%s】的文件 %d 个' % (each_type, type_dict[each_type]))
整个代码表示看不懂啊,谁能解释下是什么意思啊?哪位大神能够帮助解释下么?问题备注在代码后。感谢感谢!!
最佳答案
2016-11-2 15:42:06
lylslll 发表于 2016-11-2 15:27
谢谢!还有两个问题
一个是:dict_type这个字典不是空的么?为什么还能用setdefault()方法啊?
另一 ...

1你再看看setdefault的用法,如果字典中没有这个key时,则定义这个key并为其赋值。
2如果each_file是文件夹则,如果字典中没有“文件夹”这个key则使字典中生成'文件夹':0,如果已有这个key则使其加一,最后得到总的文件夹数量。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-2 14:41:43 | 显示全部楼层
splitext(path):分离文件名与扩展名,返回(f_name, f_extension)元组。
[1]就是得到扩展名
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-2 15:27:28 | 显示全部楼层
冬雪雪冬 发表于 2016-11-2 14:41
splitext(path):分离文件名与扩展名,返回(f_name, f_extension)元组。
[1]就是得到扩展名

谢谢!还有两个问题
一个是:dict_type这个字典不是空的么?为什么还能用setdefault()方法啊?
另一个是:这里的if os.path.isdir(each_file):
        type_dict.setdefault('文件夹', 0)
        type_dict['文件夹'] += 1
作用是什么?能麻烦你解释下么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-2 15:42:06 | 显示全部楼层    本楼为最佳答案   
lylslll 发表于 2016-11-2 15:27
谢谢!还有两个问题
一个是:dict_type这个字典不是空的么?为什么还能用setdefault()方法啊?
另一 ...

1你再看看setdefault的用法,如果字典中没有这个key时,则定义这个key并为其赋值。
2如果each_file是文件夹则,如果字典中没有“文件夹”这个key则使字典中生成'文件夹':0,如果已有这个key则使其加一,最后得到总的文件夹数量。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-8 22:36:16 | 显示全部楼层
冬雪雪冬 发表于 2016-11-2 15:42
1你再看看setdefault的用法,如果字典中没有这个key时,则定义这个key并为其赋值。
2如果each_file是文 ...

您好,os.path.isdir()不是用来判断是否为目录的吗?为什么文件夹类型可以认为是目录?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-8 23:37:47 From FishC Mobile | 显示全部楼层
傲娇团团 发表于 2018-5-8 22:36
您好,os.path.isdir()不是用来判断是否为目录的吗?为什么文件夹类型可以认为是目录?


文件夹里面里面可以装东西肯定属于目录了,只有文件才不属于目录
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-9 09:22:28 | 显示全部楼层
华丽转身123 发表于 2018-5-8 23:37
文件夹里面里面可以装东西肯定属于目录了,只有文件才不属于目录

谢谢啦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-18 21:45:09 | 显示全部楼层
终于看懂了TVT 泣谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-26 10:54:22 | 显示全部楼层
只能得到一层的数据吗?要是能一次性遍历完更深层的数据就好了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-27 23:50:55 | 显示全部楼层
为什么要先if os.path.isdir(each_file):
        type_dict.setdefault('文件夹', 0)
        type_dict['文件夹'] += 1


文件夹这个KEY值不就是各种后缀名的文件总数量了吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-25 13:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表