专业的JAVA编程教程与资源

网站首页 > java教程 正文

文件搜索查找神器-glob模块(文件搜官网)

temp10 2025-03-29 22:12:07 java教程 8 ℃ 0 评论

glob模块

glob模块是最简单的模块之一,内容非常少。用它可以查找符合特定规则的文件路径名。跟使用windows下的文件搜索差不多。

查找文件只用到三个匹配符:*, ?,[]

文件搜索查找神器-glob模块(文件搜官网)

  • *匹配0个或多个字符;
  • ?匹配单个字符;
  • []匹配指定范围内的字符,如:[0-9]匹配数字。

glob.glob 返回所有匹配的文件路径列表

它只有一个参数 pathname,定义了文件路径匹配规则,这里可以是绝对路径,也可以是相对路径。

下面是使用glob.glob的例子:

import glob

files=glob.glob(r"D:/work/*")  #获取指定目录下所有的文件,返回文件列表

glob.glob(r"E:/Picture/*/*.jpg") #获取指定目录下的所有图片

#获取上级目录的所有.py文件
print (glob.glob(r'../*.py')) #相对路径
glob.glob('./[0-9].*')#获取当前目录下的文件
['./1.gif', './2.txt']
glob.glob('*.gif') #获取当前目录下的gif文件
['1.gif', 'card.gif']

glob.iglob返回一个可迭代对象,使用它可以逐个获取匹配的文件路径名。

与glob.glob()的区别是:glob.glob同时获取所有的匹配路径,而glob.iglob返回的是可迭代对象,一次只获取一个匹配路径,这有点类似于.NET中操作数据库用到的DataSet与DataReader。下面是一个简单的例子:

import glob
#父目录中的.py文件
f = glob.iglob(r'../*.py')    #f是一个可迭代对象
print (f) 

for py in f:
    print(py)

fileinput 与 glob 结合使用

import fileinput
import glob

for line in fileinput.input(glob.glob("*.csv")):
    if fileinput.isfirstline():
        print(f'Reading {fileinput.filename()}...'.center(50,'-'))
    print(str(fileinput.filelineno()) + ': ' + line.upper(), end="")

输出

  • ---------------Reading info1.csv...---------------
  • 1: |编号| |性别| |年龄| |成绩|
  • 2: 961067 |男| 23 97
  • 3: 969157 |男| 38 98
  • ---------------Reading info2.csv...---------------
  • 1: "编号","性别","年龄","成绩"
  • 2: 969237,"男",27,120
  • 3: 970394,"男",27,118

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表