鱼C论坛

 找回密码
 立即注册
查看: 900|回复: 4

[已解决]课后习题小疑问

[复制链接]
发表于 2018-4-23 00:38:33 | 显示全部楼层 |阅读模式

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

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

x
问题:对于代码大部分能看懂,并注释。但是对于代码的整个实现过程,还是不清楚。
特别是:
type_dict['文件夹'] += 1 实现了什么效果
ext = os.path.splitext(each_file)[1] 中的[1]实现了什么效果
type_dict[ext] += 1 实现了什么效果


习题:
0、编写一个程序,统计当前目录下每个文件类型的文件数,程序实现如图:
C3E71CF252EA4081ABD5596B54BFD204.jpg


代码:
import os

all_file = 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) #从字典中返回键对应的值‘文件夹’,如果不存在‘文件夹’用0代替
        type_dict['文件夹'] += 1
    else:
        ext = os.path.splitext(each_file)[1] #变量ext,分离文件名与扩展名
        type_dict.setdefault(ext, 0) #从字典中返回键对应的值‘ext’如果不存在‘ext’用0代替
        type_dict[ext] += 1

for each_type in type_dict.keys():
    print('该文件夹下共有类型为【%s】的文件 %d个' % (each_type, type_dict[each_type]))
最佳答案
2018-4-23 09:17:08
本帖最后由 thexiosi 于 2018-4-23 09:18 编辑

hi

1. type_dict['文件夹'] += 1 实现了什么效果 #属于字典基础知识,代码中的意思是:若each_file是文件夹,字典中进行对应的计数+1,示例如下
>>> type_dict
{'abc': 0}
>>> type_dict['abc']+=1
>>> type_dict
{'abc': 1}
2.ext = os.path.splitext(each_file)[1] 中的[1]实现了什么效果 #分离文件名和扩展名,示例如下
>>> tmp = os.path.splitext('D:/hi.txt')[0]
>>> print(tmp)
D:/hi
>>> tmp = os.path.splitext('D:/hi.txt')[1]
>>> print(tmp)
.txt
3.type_dict[ext] += 1 实现了什么效果 #同问题1

需要慢慢理解和融会贯通,这些课后题开始用到很多之前的知识了 :)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-23 09:07:42 | 显示全部楼层
type_dict['文件夹'] += 1 实现了什么效果
如果是文件夹,那么将文件夹的计数器增1

ext = os.path.splitext(each_file)[1] 中的[1]实现了什么效果
取出后缀名

type_dict[ext] += 1 实现了什么效果
对应后缀名的计数器增1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-4-23 09:08:36 | 显示全部楼层
你这只是单纯的判断,当前根目录下有多少个文件和目录,2级目录及其更深的目录没办法
all_file = os.listdir(os.curdir) # 列举目录中的文件名,使用os.curdir表示当前目录
os.listdir 以列表的形式返回个个文件,目录。如:["c:\1\1.jpg", "c:\1\2","c:\1\434.exe"]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-23 09:17:08 | 显示全部楼层    本楼为最佳答案   
本帖最后由 thexiosi 于 2018-4-23 09:18 编辑

hi

1. type_dict['文件夹'] += 1 实现了什么效果 #属于字典基础知识,代码中的意思是:若each_file是文件夹,字典中进行对应的计数+1,示例如下
>>> type_dict
{'abc': 0}
>>> type_dict['abc']+=1
>>> type_dict
{'abc': 1}
2.ext = os.path.splitext(each_file)[1] 中的[1]实现了什么效果 #分离文件名和扩展名,示例如下
>>> tmp = os.path.splitext('D:/hi.txt')[0]
>>> print(tmp)
D:/hi
>>> tmp = os.path.splitext('D:/hi.txt')[1]
>>> print(tmp)
.txt
3.type_dict[ext] += 1 实现了什么效果 #同问题1

需要慢慢理解和融会贯通,这些课后题开始用到很多之前的知识了 :)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-23 09:33:52 | 显示全部楼层
很多注释都说错了
难怪不懂实现过程
python代码从上往下执行
懂循环跟if-else
怎么会不懂实现过程
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 03:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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