hhjdsd 发表于 2020-4-6 18:38:27

python课后作业文件系统

本帖最后由 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:#出错的地方
    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:
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'])

qiuyouzhi 发表于 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):#出错的地方
    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))

zltzlt 发表于 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):    # 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))
页: [1]
查看完整版本: python课后作业文件系统