鱼C论坛

 找回密码
 立即注册
查看: 422|回复: 3

[已解决]30课时 课后动手疑问

[复制链接]
发表于 2018-12-11 21:14:31 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 Stubborn 于 2018-12-11 21:54 编辑
  1. import os
  2. txt_number = 0
  3. for root,dirs,files in os.walk("g:\\As"):
  4.     for file in files:
  5.         if os.path.splitext(file)[1] == ".txt":
  6.             print(file)
  7.             txt_number +=1

  8. print(txt_number)
复制代码

  运行结果

mp4.txt
sex.txt
新建文本文档 - 副本 (2).txt
新建文本文档 - 副本.txt
sex.txt
sex.txt
6

微信截图_20181211211032.png


如果我想判断,几个文件夹,应该怎么操作?就可以通过切片吗?
最佳答案
2018-12-11 22:03:01
先看懂函数的用法
walk()方法语法格式如下:

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
参数
top -- 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。

root 所指的是当前正在遍历的这个文件夹的本身的地址
dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)

topdown --可选,为 True,则优先遍历 top 目录,否则优先遍历 top 的子目录(默认为开启)。如果 topdown 参数为 True,walk 会遍历top文件夹,与top 文件夹中每一个子目录。

onerror -- 可选,需要一个 callable 对象,当 walk 需要异常时,会调用。

followlinks -- 可选,如果为 True,则会遍历目录下的快捷方式(linux 下是软连接 symbolic link )实际所指的目录(默认关闭),如果为 False,则优先遍历 top 的子目录。

返回值
该方法没有返回值。


import os
txt_number = 0
for root,dirs,files in os.walk(r"D:\Users\Administrator\Desktop"):
    if dirs:
        txt_number+=1


print(txt_number)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-11 22:03:01 | 显示全部楼层    本楼为最佳答案   
先看懂函数的用法
walk()方法语法格式如下:

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
参数
top -- 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。

root 所指的是当前正在遍历的这个文件夹的本身的地址
dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)

topdown --可选,为 True,则优先遍历 top 目录,否则优先遍历 top 的子目录(默认为开启)。如果 topdown 参数为 True,walk 会遍历top文件夹,与top 文件夹中每一个子目录。

onerror -- 可选,需要一个 callable 对象,当 walk 需要异常时,会调用。

followlinks -- 可选,如果为 True,则会遍历目录下的快捷方式(linux 下是软连接 symbolic link )实际所指的目录(默认关闭),如果为 False,则优先遍历 top 的子目录。

返回值
该方法没有返回值。


import os
txt_number = 0
for root,dirs,files in os.walk(r"D:\Users\Administrator\Desktop"):
    if dirs:
        txt_number+=1


print(txt_number)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-12 00:33:09 | 显示全部楼层
ba21 发表于 2018-12-11 22:03
先看懂函数的用法
walk()方法语法格式如下:

files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)
图片中文件夹里面分别有一个sex.txt都可以读取到,这个不是属于子目录吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-12 13:53:49 | 显示全部楼层
Stubborn 发表于 2018-12-12 00:33
files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)
图片中文件夹里面分别有一个sex.txt都 ...

大哥他会在目录里面游走啊。跟递归一样的道理。
mport os
txt_number = 0
for root,dirs,files in os.walk(r"D:\Users\Administrator\Desktop"):
    if dirs:

        txt_number+=len(dirs)


print(txt_number)



不懂就把相关代码去掉,在for里print(dirs) 不就一目了然了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 03:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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