Python之glob模块的使用

glob模块的作用:

文件名的匹配,通俗的说,就是根据文件名查找。

1、生成测试的目录代码

import os

def mkfile(filename):
    print(filename)
    with open(filename, 'w', encoding='utf-8') as f:
        f.write('\n')

print('dir')
os.mkdir('dir')

mkfile('dir/file.txt')
mkfile('dir/file1.txt')
mkfile('dir/file2.txt')
mkfile('dir/filea.txt')
mkfile('dir/fileb.txt')
mkfile(r'dir/file?.txt')
mkfile(r'dir/file*.txt')
mkfile(r'dir/file[.txt')

print('dir/subdir')
os.mkdir('dir/subdir')

mkfile('dir/subdir/subfile.txt')
glob_maketestdata.py

运行结果

[root@python-mysql opt]# python3 glob_maketestdata.py 
dir
dir/file.txt
dir/file1.txt
dir/file2.txt
dir/filea.txt
dir/fileb.txt
dir/file?.txt
dir/file*.txt
dir/file[.txt
dir/subdir
dir/subdir/subfile.txt

# 目录的结构 [root@python
-mysql opt]# tree dir/ dir/ ├── file1.txt ├── file2.txt ├── filea.txt ├── fileb.txt ├── file?.txt ├── file.txt ├── file[.txt ├── file*.txt └── subdir └── subfile.txt

需要注意的是:Windows,文件名不支持*,能运行成功的有unix,linux系统

2、利用通配符查询所有的文件名

import glob

for name in sorted(glob.glob('./dir/*')):
    print(name)
glob_asterisk.py

运行结果

[root@python-mysql opt]# python3 glob_asterisk.py
./dir/file*.txt
./dir/file.txt
./dir/file1.txt
./dir/file2.txt
./dir/file?.txt
./dir/file[.txt
./dir/filea.txt
./dir/fileb.txt
./dir/subdir

3、利用通配符查询子目录的所有文件名

import glob

print('明确命名:')
for name in sorted(glob.glob('dir/subdir/*')):
    print('  {}'.format(name))
print('=====================')
print('以通配符命名:')
for name in sorted(glob.glob('dir/*/*')):
    print('  {}'.format(name))
glob_subdir.py

运行结果

[root@python-mysql opt]# python3 glob_subdir.py.py 
明确命名:
  dir/subdir/subfile.txt
=====================
以通配符命名:
  dir/subdir/subfile.txt

 4、利用通配符?表示未知一个字符,来进行查找文件路径

import glob

for name in sorted(glob.glob('dir/file?.txt')):
    print(name)
glob_question.py

运行结果

[root@python-mysql opt]# python3 glob_question.py
dir/file*.txt
dir/file1.txt
dir/file2.txt
dir/file?.txt
dir/file[.txt
dir/filea.txt
dir/fileb.txt

 5、指定字符区间,查询文件路径[a-z]、[A-Z]、[0-9]等

import glob

for name in sorted(glob.glob('dir/*[0-9].*')):
    print(name)
glob_charrange.py

运行结果


[root@python-mysql opt]# python3 glob_charrange.py
dir\file1.txt
dir\file2.txt

 6、需要转义字符后,查找文件目录

import glob

specials = '?*['
for char in specials:
    pattern = 'dir/*' + glob.escape(char) + '.txt'
    for name in glob.glob(pattern):
        print(name)
glob_escape.py

 运行结果

[root@python-mysql opt]# python3 glob_escape.py
dir/file?.txt
dir/file*.txt
dir/file[.txt

 7、根据扩展名过滤文件

import glob

for name in sorted(glob.glob('*.py')):
    print(name)
glob_extension.py

 

运行结果

server.py
glob_extension.py
posted @ 2020-04-26 11:42  小粉优化大师  阅读(285)  评论(0编辑  收藏  举报