30讲,动动手d0题,小白笨b,大神求解答
本帖最后由 我下何从 于 2020-5-19 11:41 编辑import os
all_files=os.listdir('E:\ALLworkinstalltion\python\pythonzouye\homework\o10')
type_dict=dict()
for each_file in all_files:
if os.path.isdir(each_file):
type_dict.setdefault('文件夹',0)
type_dict["文件夹"]=type_dict["文件夹"]+1 #这个判断是否是目录是什么意思呢?不写下面的代码的话,直接打印这里是个空字典,想了好久,小白较笨,望大神解疑
不是只需要判断是啥文件不就可以了吗?那直接就用else里的代码不就ok了吗,可这样出来的还是个空字典
else:
ext=os.path.splitext(each_file)
type_dict.setdefault(ext,0)
type_dict+=1
print(type_dict)
for each_type in type_dict.keys():
print("该文件夹下共有类型为【%s】的文件%d个"% (each_type, type_dict))
print(type_dict)
那个if得判断是否是文件夹呀,不是文件夹才执行else qiuyouzhi 发表于 2020-5-19 11:37
那个if得判断是否是文件夹呀,不是文件夹才执行else
我设置的工作目录里没有文件夹,这样去掉if 好像也不行?{:5_99:} 我下何从 发表于 2020-5-19 11:40
我设置的工作目录里没有文件夹,这样去掉if 好像也不行?
qiuyouzhi 发表于 2020-5-19 11:37
那个if得判断是否是文件夹呀,不是文件夹才执行else
好像不用 if 里面的代码就不能实现 而且if 里面判断的是目录哦? 我下何从 发表于 2020-5-19 11:43
好像不用 if 里面的代码就不能实现 而且if 里面判断的是目录哦?
emmm,貌似是的
但是if肯定被触发过 本帖最后由 Twilight6 于 2020-5-19 11:50 编辑
我下何从 发表于 2020-5-19 11:43
好像不用 if 里面的代码就不能实现 而且if 里面判断的是目录哦?
这样可用理解嘛?
import os
all_files = os.listdir(os.curdir) # 使用os.curdir表示当前目录更标准
type_dict = dict() # 初始化一个空字典
for each_file in all_files:
if os.path.isdir(each_file):# 这边是先判断指定路径是否存在且是一个目录
type_dict.setdefault('文件夹', 0)# 如果是目录在执行这里的代码块
# setdefault 方法是如果字典中包含有给定键,则返回该键对应的值,否则返回为该键设置的值。用于统计文件夹数量
type_dict['文件夹'] += 1# 每次查找到一个目录 数量就 +1 用于统计文件夹个数
else:# 反正不是文件夹,执行else 既遍历到的是文件不是文件夹
ext = os.path.splitext(each_file) # 分离文件扩展名
type_dict.setdefault(ext, 0) # 同if内含义
type_dict += 1 # 每次查相同类型的文件 数量就 +1 用于统计相同类型的文件个数
for each_type in type_dict.keys():
print('该文件夹下共有类型为【%s】的文件 %d 个' % (each_type, type_dict)) 本帖最后由 我下何从 于 2020-5-19 11:58 编辑
Twilight6 发表于 2020-5-19 11:48
这样可用理解嘛?
我觉得目录是怎么定义的呢?如果单单是目录的话,那打开我的电脑后任意进盘都是目录,为啥还要判断呢?
而且即使这个目录里面没有文件夹,使用print(type_dict)放在else上面以及for(与它并列)下面的时候,还是打印出四个空字典 我下何从 发表于 2020-5-19 11:57
我觉得目录是怎么定义的呢?如果单单是目录的话,那打开我的电脑后任意进盘都是目录,为啥还要判断呢? ...
目录就是指文件夹 Twilight6 发表于 2020-5-19 11:59
目录就是指文件夹
import os
all_files=os.listdir('E:\ALLworkinstalltion\python\pythonzouye\homework\o10') #这个目录里没有文件夹,只有文件
type_dict=dict()
for each_file in all_files:
#if os.path.isdir(each_file):
#type_dict.setdefault('文件夹',0)
#type_dict["文件夹"]=type_dict["文件夹"]+1 #去除红字if找寻统计文件夹的代码
#else:
if os.path.isfile(each_file):
ext=os.path.splitext(each_file)
type_dict.setdefault(ext,0)
type_dict+=1
print(type_dict)
for each_type in type_dict.keys():
print("该文件夹下共有类型为【%s】的文件%d个"% (each_type, type_dict))
print(type_dict)
打印出了
{}
{}
{}
{}
按照T哥这样理解的话是这样吗?
qiuyouzhi 发表于 2020-5-19 11:47
emmm,貌似是的
但是if肯定被触发过
对,但不知道为啥会触发到它,即使目录里没有文件夹也不能把它去掉,苦恼苦恼 我下何从 发表于 2020-5-19 12:07
import os
你把我代码复制 拿去运行试试结果 Twilight6 发表于 2020-5-19 12:09
你把我代码复制 拿去运行试试结果
T哥这个肯定是对的,我复制了可行。但是主要是不理解那个if里代码为什么一定要用到呢?即使该目录里没有文件夹。去掉就不行 我下何从 发表于 2020-5-19 12:12
T哥这个肯定是对的,我复制了可行。但是主要是不理解那个if里代码为什么一定要用到呢?即使该目录里没有 ...
你把去掉后的完整报错信息 复制发来看看 我下何从 发表于 2020-5-19 12:12
T哥这个肯定是对的,我复制了可行。但是主要是不理解那个if里代码为什么一定要用到呢?即使该目录里没有 ...
import os
os.chdir('C:\\py')
all_files = os.listdir(os.curdir) # 使用os.curdir表示当前目录更标准
type_dict = dict() # 初始化一个空字典
for each_file in all_files:
ext = os.path.splitext(each_file) # 分离文件扩展名
type_dict.setdefault(ext, 0) # 同if内含义
type_dict += 1 # 每次查相同类型的文件 数量就 +1 用于统计相同类型的文件个数
for each_type in type_dict.keys():
print('该文件夹下共有类型为【%s】的文件 %d 个' % (each_type, type_dict))
去掉了,运行完全正常,是你代码出了些差错你直接复制试试 Twilight6 发表于 2020-5-19 12:50
去掉了,运行完全正常,是你代码出了些差错你直接复制试试
我试了一下
import os
all_files=os.listdir('E:\ALLworkinstalltion\python\pythonzouye\homework\o10')
type_dict=dict()
for each_file in all_files:
if os.path.isfile(each_file): #这行去掉就正常,这行不去就不正常,这里进行判断有问题吗?打扰T哥的休息时间了
ext=os.path.splitext(each_file)
type_dict.setdefault(ext,0)
type_dict+=1
for each_type in type_dict.keys():
print("该文件夹下共有类型为【%s】的文件%d个"% (each_type, type_dict)) 我下何从 发表于 2020-5-19 12:58
我试了一下
import os
isfile(path) 判断指定路径是否存在且是一个文件
你理解错了这个的意思了,这个的意思是判断单个文件的路径比如:
os.path.isfile('C:\\text.txt')# 这里返回True
# 如果text文件存在,那么返回true,否则返回false
os.path.isfile('C:\\py') # 假设py为文件夹
# 则返回False,因为他输入的路径是文件夹的路径,文件夹不算文件 我下何从 发表于 2020-5-19 12:58
我试了一下
import os
each_file 所有都是文件名,而不是一个完整的路径 所以肯定不会执行if 里面的代码块 Twilight6 发表于 2020-5-19 12:50
去掉了,运行完全正常,是你代码出了些差错你直接复制试试
import os
1
os.chdir('C:\\py')
all_files = os.listdir(os.curdir) # 使用os.curdir表示当前目录更标准
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
2
all_files=os.listdir('E:\ALLworkinstalltion\python\pythonzouye\homework\o10')
T哥,这个是关键啊!!!!
1的话都行
2的就不行了 我下何从 发表于 2020-5-19 13:04
import os
1
谢谢T哥哈!辛苦了!
页:
[1]
2