鱼C论坛

 找回密码
 立即注册
查看: 1915|回复: 6

[已解决]为什么统计文件夹数量时,不显示‘文件夹’类型呢

[复制链接]
发表于 2020-1-2 15:00:50 | 显示全部楼层 |阅读模式

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

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

x
代码如下:
import os
all_files = os.listdir(r'C:\Users\wb-fxy647636\Desktop\study')
# print(all_files)
# type_dict.clear()
type_dict = dict()
for each_file in all_files:
    if os.path.isdir(each_file):
        type_dict.setdefault('文件夹',0)
        type_dict['文件夹'] += 1
      # print(each_file)
   # print(type_dict)

    else:
        ext = os.path.splitext(each_file)[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]))

结果如图 捕获.PNG
最佳答案
2020-1-2 17:01:28
一拳,头打歪 发表于 2020-1-2 16:51
如图,结果直接全部识别为文件夹是什么啥情况啊

吐血
你要这样写:if os.path.isdir(r'C:\Users\wb-fxy647636\Desktop\study\' + each_file ):
按你的写法if os.path.isdir(r'C:\Users\wb-fxy647636\Desktop\study'):,你历遍了study里的文件,却每次都让它判断study是不是文件夹,是什么骚操作?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-1-2 15:41:27 | 显示全部楼层
import os
path = r'C:\Users\wb-fxy647636\Desktop\study'
all_files = os.listdir(path)
# print(all_files)
# type_dict.clear()
type_dict = dict()
for each_file in all_files:
    if os.path.isdir(os.path.join(path, each_file)):  # 提供完整路径
        type_dict.setdefault('文件夹',0)
        type_dict['文件夹'] += 1
      # print(each_file)
   # print(type_dict)

    else:
        ext = os.path.splitext(each_file)[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]))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-1-2 15:47:42 | 显示全部楼层

这也太复杂了吧?什么原理,可以简化吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-2 15:56:41 | 显示全部楼层
一拳,头打歪 发表于 2020-1-2 15:47
这也太复杂了吧?什么原理,可以简化吗

可以呀,只要给os.path.isdir提供一个完整的路径参数就可以了,不管用什么方法,单单给一个文件名它是没法判断是不是文件夹的(os.listdir得到的仅仅是文件名,不包含路径)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-2 16:51:03 | 显示全部楼层
hrp 发表于 2020-1-2 15:56
可以呀,只要给os.path.isdir提供一个完整的路径参数就可以了,不管用什么方法,单单给一个文件名它是没 ...

捕获.PNG
捕获1.PNG
如图,结果直接全部识别为文件夹是什么啥情况啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-2 17:01:28 | 显示全部楼层    本楼为最佳答案   
一拳,头打歪 发表于 2020-1-2 16:51
如图,结果直接全部识别为文件夹是什么啥情况啊

吐血
你要这样写:if os.path.isdir(r'C:\Users\wb-fxy647636\Desktop\study\' + each_file ):
按你的写法if os.path.isdir(r'C:\Users\wb-fxy647636\Desktop\study'):,你历遍了study里的文件,却每次都让它判断study是不是文件夹,是什么骚操作?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-1-2 17:05:15 | 显示全部楼层
hrp 发表于 2020-1-2 17:01
吐血
你要这样写:if os.path.isdir(r'C:%users\wb-fxy647636\Desktop\study\' + each_file ) ...

牛皮,已设最佳,感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-27 02:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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