微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python 标准库之 glob 介绍获取文件夹下所有同类文件

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 举报,一经查实,本站将立刻删除。

相关推荐