python标准库之glob介绍
glob 文件名模式匹配,不用遍历整个目录判断每个文件是不是符合。
1、通配符
星号(*)匹配零个或多个字符
import glob
for name in glob.glob('dir/*'):
print (name)
dir/file.txt
dir/file1.txt
dir/file2.txt
dir/filea.txt
dir/fileb.txt
dir/subdir
import glob
#用子目录查询文件
print ('Named explicitly:')
for name in glob.glob('dir/subdir/*'):
print ('\t',name)
#用通配符* 代替子目录名
print ('Named with wildcard:')
for name in glob.glob('dir/*/*'):
print ('\t',name)
Named explicitly:
dir/subdir/subfile.txt
Named with wildcard:
dir/subdir/subfile.txt
2、单个字符通配符
用问号(?)匹配任何单个的字符。
import glob
for name in glob.glob('dir/file?.txt'):
print (name)
dir/file1.txt
dir/file2.txt
dir/filea.txt
dir/fileb.txt
3、字符范围
import glob
for name in glob.glob('dir/*[0-9].*'):
print (name)
dir/file1.txt
dir/file2.txt
源码实例:__init__.py
import os
import glob
# Detect all modules
for fullname in glob.glob(os.path.dirname(__file__) + "/*.py"):
name = os.path.basename(fullname)
# __init__ and clientbase are not capabilities,so ignore them
if name[:-3] == "__init__" or name[:-3] == "clientbase":
pass
else:
__import__("beeswarm.drones.client.baits." + name[:-3])
自己的实例:
__init__.py
import os
import glob
import logging
logger = logging.getLogger(__name__)
obj = []
for fullname in glob.glob(os.path.dirname(__file__) + "/*.py"):
name = os.path.basename(fullname)
if name[:-3] == "__init__":
pass
else:
obj.append(name[:-3])
main.py
for cl in protocol.obj:
if self.server == cl:
Metaclass = importlib.import_module("protocol." + cl)
gsl = Metaclass.pot()
gsl.start()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。