鱼C论坛

 找回密码
 立即注册
查看: 1525|回复: 14

[已解决]第30课的课后作业第0题

[复制链接]
发表于 2018-2-2 17:35:58 | 显示全部楼层 |阅读模式

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

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

x
求大家看看图告诉我为什么文件夹没打出来一共4个文件夹,但是他说只有3个
最佳答案
2018-2-2 20:59:53
你的问题发现了,文件夹根本没有识别,你最后加上print(file)就能知道了,
即你的if那句没有一个识别,文件夹识别成没名字得了
开始加上这句
path=input('输入路径:')
os.chdir(path)
你这里没有切换当前文件夹,导致不识别
37W_MU%8{P4Z8%KLFOK2}NV.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-2-2 17:48:09 | 显示全部楼层
是不是有些文件夹里面还有文件夹?那需要迭代往里挖看看才能统计完全。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-2 17:51:04 | 显示全部楼层
感觉没错啊~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-2 19:24:46 | 显示全部楼层
目测没问题,下次发代码用<>,文件夹截图
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-2 20:17:50 | 显示全部楼层
塔利班 发表于 2018-2-2 19:24
目测没问题,下次发代码用,文件夹截图
  1. import os
  2. allfile = os.listdir('C:\\Users\\fengx\\Desktop\\课件')
  3. file = {}

  4. for eachfile in allfile:
  5.     if os.path.isdir(eachfile):
  6.         file.setdefault('文件夹',0)
  7.         file['文件夹'] += 1
  8.     else:
  9.         ext = os.path.splitext(eachfile)[1]
  10.         file.setdefault(ext,0)
  11.         file[ext] += 1

  12. for k in file.keys():
  13.     print ('此目录共有%d个【%s】类型的文件' % (file[k],k))
  14.         
复制代码
P]JHT2GA__C%}7~22I~KY]9.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-2 20:19:06 | 显示全部楼层
vstia 发表于 2018-2-2 17:48
是不是有些文件夹里面还有文件夹?那需要迭代往里挖看看才能统计完全。

对,有个文件夹里还有一个文件夹
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-2 20:19:42 | 显示全部楼层
但是最表面就4个
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-2 20:59:53 | 显示全部楼层    本楼为最佳答案   
你的问题发现了,文件夹根本没有识别,你最后加上print(file)就能知道了,
即你的if那句没有一个识别,文件夹识别成没名字得了
开始加上这句
path=input('输入路径:')
os.chdir(path)
你这里没有切换当前文件夹,导致不识别
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-2 22:32:36 | 显示全部楼层
可以用os.walk 遍历目录和子目录下的所有文件和文件夹

  1. import os

  2. def get_files(dir_):

  3.     targets = []
  4.     for path, dirs, files in os.walk(dir_):

  5.         for name in files:

  6.             file = os.path.join(path, name)
  7.             targets.append(file)

  8.     return targets

  9. allfile = get_files('C:\\Users\\fengx\\Desktop\\课件')
  10. file = {}

  11. for eachfile in allfile:
  12.     if os.path.isdir(eachfile):
  13.         file.setdefault('文件夹',0)
  14.         file['文件夹'] += 1
  15.     else:
  16.         ext = os.path.splitext(eachfile)[1]
  17.         file.setdefault(ext,0)
  18.         file[ext] += 1

  19. for k in file.keys():
  20.     print ('此目录共有%d个【%s】类型的文件' % (file[k],k))
  21.         
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-3 11:37:35 | 显示全部楼层
塔利班 发表于 2018-2-2 20:59
你的问题发现了,文件夹根本没有识别,你最后加上print(file)就能知道了,
即你的if那句没有一个识别,文 ...

是的,没错,if os.path.isdir(eachfile):这里的目录是工作目录并不是我指的'C:\\Users\\fengx\\Desktop\\课件
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-25 17:13:36 | 显示全部楼层
塔利班 发表于 2018-2-2 20:59
你的问题发现了,文件夹根本没有识别,你最后加上print(file)就能知道了,
即你的if那句没有一个识别,文 ...

意思是要使isdir语句生效必须先改变当前工作目录?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-25 17:16:34 | 显示全部楼层
wiselin 发表于 2018-9-25 17:13
意思是要使isdir语句生效必须先改变当前工作目录?

isdir全路径肯定没问题,但是listdir得到的都没有上级路径,只有当前目录的可以识别成文件夹
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-26 09:48:25 | 显示全部楼层
塔利班 发表于 2018-9-25 17:16
isdir全路径肯定没问题,但是listdir得到的都没有上级路径,只有当前目录的可以识别成文件夹
  1. import os
  2. path=input("请输入路径:")
  3. all_files = os.listdir(path)
  4. count=dict()
  5. for i in all_files:
  6.     if os.path.isdir(i):
  7.         count.setdefault('文件夹',0)
  8.         count['文件夹']+=1
  9.     else:
  10.         ext=os.path.splitext(i)[1]
  11.         count.setdefault(ext,0)
  12.         count[ext]+=1

  13. for each in count.keys():
  14.     print("该文件夹下共有类型为【%s】的文件%d个"%(each,count[each]))
  15.    
复制代码

1.jpg 2.jpg 3.jpg

但是我这段没有加os.chdir,检索第一个路径就可以检测到文件夹,另一个就不行,求大神解答
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-26 09:57:08 | 显示全部楼层
本帖最后由 塔利班 于 2018-9-26 10:11 编辑

我口胡了,应该识别不出来文件夹的正常
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-26 10:16:37 | 显示全部楼层
你能识别出来还是重名的问题,因为py文件和一级‘个人’一个目录,二级目录‘个人’作为一级的名字识别成了目录,我转过弯了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-7 04:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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