zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

Python文件标准 获取 介绍 所有 文件夹
2023-09-11 14:14:47 时间

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()