鱼C论坛

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

[已解决]python课后作业文件系统

[复制链接]
发表于 2020-4-6 18:38:27 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 hhjdsd 于 2020-4-6 18:44 编辑

求助,不知道哪错了
import os
file_path = os.walk('.')
file_name = []
file_extension_name1 = []
file_extension_name2 = []
for each in file_path[2]:#出错的地方
    file_name.append(each)
for each in file_name:
    (name,extension_name) = each.split('.')
    file_extension_name1.append(extension_name)
for each in file_extension_name1:
    if each not in file_extension_name2:
        file_extension_name2.append(each)
for each in file_extension_name2:
    extension_count = file_extension_name1.count(each)
    print('该文件夹下共有类型为【%s】的文件%d个' % (each,extension_count))


Traceback (most recent call last):
  File "D:\编程练习\课后作业(文件系统,第30讲,动动手第0题).py", line 6, in <module>
    for each in file_path[2]:
TypeError: 'generator' object is not subscriptable
file_path为以下内容:
('.', [], ['ascll值对照表.png', 'test.py', 'test.txt', 'test1.txt', 'test2.txt', '回答问题(输入地板大小、方块数量的两个因数,求方块数量).py', '字符串.png', '字符串的方法及注释(1).png', '字符串的方法及注释(2).png', '密码安全检测.py', '小游戏(迫害).py', '文件的打开模式和文件对象方法.png', '课后作业(字典,第25讲,动动手第0题).py', '课后作业(字典,第26讲,动动手第0题).py', '课后作业(字符串:格式化).py', '课后作业(序列!序列!).py', '课后作业(文件系统,第30讲,动动手第0题).py', '课后作业(文件,第29讲,动动手第0题).py', '课后作业(文件,第29讲,动动手第1题).py', '课后作业(文件,第29讲,动动手第2题).py', '课后作业(文件,第29讲,动动手第3题).py', '课后作业(文件,第29讲,动动手第4题).py', '课后作业(递归23,24讲第0题).py', '课后作业(递归23,24讲第1题).py', '课后作业(递归23,24讲第2题).py', '课后作业(递归23,24讲第3题).py', '随便玩玩.py', '集合方法.png'])
最佳答案
2020-4-6 18:40:07
本帖最后由 qiuyouzhi 于 2020-4-6 18:45 编辑

os.walk产生的是一个生成器,而不是列表
你可以写一个循环,把os.walk的内容放进那个列表里
比如:
import os
file_path = os.walk('.'):
file_name = []
file_extension_name1 = []
file_extension_name2 = []
for each in list(file_path[2]):#出错的地方
    file_name.append(each)
for each in file_name:
    (name,extension_name) = each.split('.')
    file_extension_name1.append(extension_name)
for each in file_extension_name1:
    if each not in file_extension_name2:
        file_extension_name2.append(each)
for each in file_extension_name2:
    extension_count = file_extension_name1.count(each)
    print('该文件夹下共有类型为【%s】的文件%d个' % (each,extension_count))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-6 18:40:07 | 显示全部楼层    本楼为最佳答案   
本帖最后由 qiuyouzhi 于 2020-4-6 18:45 编辑

os.walk产生的是一个生成器,而不是列表
你可以写一个循环,把os.walk的内容放进那个列表里
比如:
import os
file_path = os.walk('.'):
file_name = []
file_extension_name1 = []
file_extension_name2 = []
for each in list(file_path[2]):#出错的地方
    file_name.append(each)
for each in file_name:
    (name,extension_name) = each.split('.')
    file_extension_name1.append(extension_name)
for each in file_extension_name1:
    if each not in file_extension_name2:
        file_extension_name2.append(each)
for each in file_extension_name2:
    extension_count = file_extension_name1.count(each)
    print('该文件夹下共有类型为【%s】的文件%d个' % (each,extension_count))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-6 18:40:16 | 显示全部楼层
这样试试:
import os
file_path = os.walk('.')
file_name = []
file_extension_name1 = []
file_extension_name2 = []
for each in list(file_path)[2]:    # file_path 不是列表,不能直接索引
    file_name.append(each)
for each in file_name:
    (name,extension_name) = each.split('.')
    file_extension_name1.append(extension_name)
for each in file_extension_name1:
    if each not in file_extension_name2:
        file_extension_name2.append(each)
for each in file_extension_name2:
    extension_count = file_extension_name1.count(each)
    print('该文件夹下共有类型为【%s】的文件%d个' % (each,extension_count))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 01:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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