linux查看python文件_Python Linux系统管理之查找文件

一、使用fnmatch找到特定文件

1.建立多个文本,模拟实验内容。

touch {a..z}.txt

2.查找本文件夹中所有以”.txt”结尾的文件并以列表的形式输出。

In [1]: import os

In [2]: [item for item in os.listdir('.') if item.endswith('.txt')]

Out[2]:

['data1.txt','data2.txt','a.txt','b.txt','c.txt','d.txt','e.txt','f.txt','g.txt','h.txt','i.txt','j.txt','k.txt','l.txt','m.txt','n.txt','o.txt','p.txt','q.txt','r.txt','s.txt','t.txt','u.txt','v.txt','w.txt','x.txt','y.txt','z.txt']

大部分情况下,使用字符串匹配查找特定的文件就能够满足需求,如果需要更佳灵活的字符串匹配,可以使用标准库fnmatch库,这个库专门用来进行文件名匹配,支持使用通配符进行字符串匹配。fnmatch支持的通配符如下所示。

* 匹配任何数量的字符

? 匹配单个字符

[seq] 匹配了seq中的字符

[!seq] 匹配除了seq以外的任何字符

fnmatch这个库比较简单,只有4个函数,分别是fnmatch、fnmatchcase、filter和translate。其中最常用的是fnmatch函数。各个函数的作用如下:

fnmatch 判断文件名是否符合特定的模式;

fnmatchcase 判断文件名是否符合特定的模式,不区分大小写;

filter 返回输入列表中,符合特定模式的文件名列表;

translate 将通配符模式转换成正则表达式。

3.创建四个文本,模拟实验环境

touch {a..b}1.txt {c..d}2.jpg

在Python代码中,使用fnmatch函数对当前目录下的4个文件进行匹配性测试,如下所示:

In [3]: import os

In [4]: import fnmatch

In [5]: os.listdir('.')

Out[5]:

['.bash_logout','.bash_profile','.bashrc','.cshrc','.tcshrc','anaconda-ks.cfg','.bash_history','.pki','v3.0.6.zip','easy-rsa','.rnd','.pip','.cache','.ipython','data','data1.txt','data2.txt','a.txt','b.txt','c.txt','d.txt','e.txt','f.txt','g.txt','h.txt','i.txt','j.txt','k.txt','l.txt','m.txt','n.txt','o.txt','p.txt','q.txt','r.txt','s.txt','t.txt','u.txt','v.txt','w.txt','x.txt','y.txt','z.txt']

In [6]:

fnmatchcase函数与fnmatch函数几乎一样,只是在匹配文件名时会忽略文件名中的字母大小写。filter函数与fnmatch函数比较类似,区别在于fnmatch每次对一个文件名进行匹配判断,文件名模式为第二个参数,然后以列表的形式返回输入列表中所有符合模式的文件名,如下所示:

In [1]: import os

In [2]: import fnmatch

In [3]: names = os.listdir(‘.’)

In [4]: names

Out[4]: [‘a1.txt’, ‘b1.txt’, ‘c2.jpg’, ‘d2.jpg’]

In [5]: fnmatch.filter(names,”[a-c]?.txt”)

Out[5]: [‘a1.txt’, ‘b1.txt’]

In [6]: fnmatch.filter(names,”[!a-c]*”)

Out[6]: [‘d2.jpg’]

二、使用glob找到特定的文件

glob的作用相当于os.listdir加上fnmatch。使用glob后,不需要调用os.listdir获取文件列表,直接通过模式匹配即可,如下所示:

In [1]: import glob

In [2]: glob.glob(‘*.txt’)

Out[2]: [‘a1.txt’, ‘b1.txt’]

In [3]: glob.glob(‘[a-c]?.jpg’)

Out[3]: [‘c2.jpg’]

In [4]: glob.glob(‘[!a-c]?.jpg’)

Out[4]: [‘d2.jpg’]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值