鱼C论坛

 找回密码
 立即注册
查看: 2399|回复: 2

[已解决]零基础python的30讲动动手0,这题代码的思路是什么?部分代码不明白求解答

[复制链接]
发表于 2016-10-27 23:55:09 | 显示全部楼层 |阅读模式

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

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

x
  1. import os                              #引入os模块

  2. all_files = os.listdir(os.curdir)      #os.listdir列举指定目录中的文件名 os.curdir表示当前目录
  3. type_dict = dict()                         #创建一个字典

  4. for each_file in all_files:              #遍历所有文件
  5.     if os.path.isdir(each_file):       #如果文件存在于同一个目录路径?
  6.         type_dict.setdefault('文件夹', 0)  #setdefault在字典中找不到对应的key会自行添加,'文件夹'是key,0对应value
  7.         type_dict['文件夹'] += 1           #'文件夹'表示文件类型
  8.     else:
  9.         ext = os.path.splitext(each_file)[1]    #splitext分离文件名和扩展名
  10.         type_dict.setdefault(ext, 0)
  11.         type_dict[ext] += 1

  12. for each_type in type_dict.keys():
  13.     print('该文件夹下共有类型为【%s】的文件 %d 个' % (each_type, type_dict[each_type]))
复制代码



请问:1.这题的整体思路应该是怎样?我想的是利用字典的key和value对应文件类型和个数
2.代码中else后的部分是什么意思?特别是os.path.splitext(each_file)[1]   最后这个[1]是什么,为什么需要?
3.#后的注释自己理解写上去的,请高手指教
虚心求教脸
最佳答案
2016-10-28 17:31:03
1.思路就是你说的那样
2.这句  if os.path.isdir(each_file):  是判断each_file是否是文件夹,如果是就在字典里加一个 '文件夹'是key,0对应value 。如果不是 就是else后面的语句了,不是文件夹就是一个文件了  然后分离文件名和文件后缀  这个[1]就是要取文件的后缀名
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-28 17:31:03 | 显示全部楼层    本楼为最佳答案   
1.思路就是你说的那样
2.这句  if os.path.isdir(each_file):  是判断each_file是否是文件夹,如果是就在字典里加一个 '文件夹'是key,0对应value 。如果不是 就是else后面的语句了,不是文件夹就是一个文件了  然后分离文件名和文件后缀  这个[1]就是要取文件的后缀名
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-28 17:49:26 | 显示全部楼层
玄天宗 发表于 2016-10-28 17:31
1.思路就是你说的那样
2.这句  if os.path.isdir(each_file):  是判断each_file是否是文件夹,如果是就在 ...

你一说那个[1]的作用我就明白啦,谢谢解答啦!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-23 15:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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