当前位置: 首页 > news >正文

Python Cookbook-2.19 根据指定的搜索路径和模式寻找文件

任务

给定一个搜索路径(一个描述目录信息的字符串),需要在此目录中找出所有符合匹配模式的文件。

解决方案

基本上,需要循环路径中的所有目录。这个循环最好被封装成一个生成器:

import glob,os
def all_files(pattern,search_path,pathsep=os.pathsep):
'''给定搜索路径,找出所有满足匹配条件的文件'''
	for path in search_path.split(pathsep):
		for match in glob.glob(os.path.join(path, pattern)):
			yield match

讨论

生成器的好处是,可以很容易地获取第一个子项,或者所有子项,再或者其中任意一个子项。比如,打印出你的环境变量 PATH 中第一个符合"*.pye"模式的文件:

print all_files('*.pye',os.environ['PATH']).next( )`

打印所有这种文件,一行一个:

for match in all_files('*.pye',os.environ['PATH']):
	print match

以列表形式一次全部打印出来:

print list(all_files('*.pye',os.environ['PATH']))

给 all_files函数提供了一个主脚本,以方便打印出的 PATH 中所有符合匹配模式的文件。因此,不仅能够看到根据指定名字将被执行的那个文件(第一个),还能看到被第一个文件“屏蔽”掉的其他同名文件:

if __name__ == '__main__':
	import sys
	if len(sys.argv) != 2 or sys.argv[1].startswith('_'):
		print 'Use: %s <pattern>' % sys.arqv[0]
		sys.exit(1)
	matches = list(all_files(sys.argv[1], os.environ['PATH']))
	print '%d match:' % len(matches)
	for match in matches:
		print match
http://www.dtcms.com/a/44530.html

相关文章:

  • 脑机接口SSVEP 信号特征提取技术术语
  • 认知动力学视角下的生命优化系统:多模态机器学习框架的哲学重构
  • CompletableFuture
  • unittest自动化测试框架详解
  • yunedit-post ,api测试比postman更好
  • 分布式数据存储:提升系统弹性与性能的技术之路
  • Ubuntu 防火墙iptables和 ufw
  • 数据集笔记:NUSMods API
  • 05类加载机制篇(D1_类文件结构)
  • Linux环境安装Nginx及版本升级指南
  • 自学微信小程序的第八天
  • 深入解析 Kubernetes CRD:原理、特点与典型应用场景
  • 苍穹外卖-阿里云OSS文件上传
  • 行业智能体构建的关键技术与实践路径探索
  • 【AD】3-6 层次原理图
  • day01_Java基础
  • 【AD】3-8 原理图封装批量化添加与完整性检查
  • 构建安全的Docker基础镜像:从最佳实践到自动化加固
  • 【弹性计算】弹性裸金属服务器和神龙虚拟化(一):功能特点
  • 网络安全等级保护:网络安全等级保护基本技术
  • 大模型微调入门(Transformers + Pytorch)
  • 7.2 - 定时器之计算脉冲宽度实验
  • Kotlin协变与逆变区别
  • 网络安全完成mysql加固
  • [Web 安全] PHP 反序列化漏洞 —— POP 链构造思路
  • YOLOv11-ultralytics-8.3.67部分代码阅读笔记-VOC.yaml
  • 目录遍历文件包含测试
  • 精品整理-2025 DeepSeek核心技术解析与实践资料合集(24份)
  • 类中的流操作符的重载
  • Python 数据可视化(一)熟悉Matplotlib