使用Python处理目录(一):打印目录下的文件名

要想遍历某一目录下的文件名,使用os.walk再方便不过了。他返回的是一个以元组为元素的列表。每一个元素都包含三个内容:路径,该路径下的子目录,该路径下的文件。

os.walk使用了生成器技术(关于该技术的说明请参考其它文档或者技术资料)yield,给使用者带来了非常大的使用上的灵活性。由于生成器技术使得会函数walk的调用一次只返回一个元组,节省了内存空间,提升了执行效率。

比如使用者只想得到当前目录这一层次的文件,而不想递归其子目录函数。如果walk没有使用生成器技术,则可能需要通过传参控制是否递归子目录,或者利用两个函数分别管理是否递归子目录。另外如果需要控制递归层次,也需要添加参数。如果不想这么麻烦,也可以一次性获取目录下所有文件(包括子目录下的),然后根据需要使用哪些文件,但是这样带来的后果是时间和空间都带来了极大的浪费。
而使用了yield技术,由于生成器每次只生成一个目录层次的内容,节省时间和空间,同时将控制权交给用户,由用户决定是否要递归子目录。

本文中主要的函数allFiles也运用了生成器技术,调用一次返回一个需要的文件,而不是一次性返回所有需要的列表,同样在使用的灵活性和效率上都有很好的表现。
另外allFiles添加了一些个性化的功能:
1、通过fnmatch对想要的文件格式进行匹配过滤,想要匹配的文件在参数patterns中通过分号传递要匹配的文件种类。例如*代表匹配所有文件,*txt代表匹配所有后缀名txt的文件。
2、single_level为True表示只处理一层目录,为False表示递归处理子目录。3、yield_folders表示是否将匹配的目录也输出。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值