Python(10):文本处理,正则表达式

os.getcwd() 返回当前目录
>>> os.getcwd()
'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36-32'

os.listdir(directory) 返回directory目录中的文件名和子目录列表
>>> a = os.getcwd()
>>> os.listdir(a)
['DLLs', 'Doc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe', 'python3.dll', 'python36.dll', 'pythonw.exe', 'README.txt', 'Scripts', 'tcl', 'Tools', 'vcruntime140.dll']

os.stat(path) 返回一个元组,关于文件的信息
st_mode:文件的访问权限
st_ino:节点数(UNIX)
st_dev:设备号
st_nlink:链接号(UNIX)
st_uid:所有者的用户id
st_gid:所有者的组id
st_size:文件的大小
st_atime:最后访问时间
st_mtime:最后修改时间
st_ctime:创建时间
>>> b = os.listdir(a)
>>> os.stat(b[1])
os.stat_result(st_mode=16895, st_ino=281474976800257, st_dev=3537546670, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1486357558, st_mtime=1486357558, st_ctime=1486357558)

os.path.split(path) 将路径分割为符合当前操作系统的组成名称。返回一个元组
>>> os.path.split(a)
('C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python', 'Python36-32')
其实就是将最后的文件或者目录分割开

os.path.join(components) 将名称链接成符合当前操作系统的路径,

os.path.normcase(path) 规范化路径的大小写。unix下文件名是区分大小写的,所以没影响,但是在windows下,操作系统在比较文件名的时候是忽略大小写的。在windows下,会返回一个全小写的路径。

os.walk(top, topdown = True, onerror = None, followlinks = False)
可以自上而下或者自下而上迭代目录树。对每个目录,创建一个由dirpath、dirnames、filenames组成的三元组。
dirpath部分是一个保存目录路径的字符串。
dirnames部分是dirpath中子目录的列表,不包括"."和".."。
filenames是dirpath中每个非目录文件的一个列表。

找到某个目录下所有的pdf文件:

#!/usr/bin/env python 3.6
import os, os.path #os系统相关的模块
import re #正则表达式的模块


def print_pdf(root, dirs, files):#找到pdf文件,打印出来
    for file in files:
        path = os.path.join(root, file)
        path = os.path.normcase(path) #拼凑一个完整的路径出来
        if re.search(r".*\.pdf", path): #看看是不是pdf文件
            print(path)


#对当前目录进行遍历,并搜索pdf文件
for root, dirs, files in os.walk('.'):
    print_pdf(root, dirs, files)

正则表达式的简单实用例子:

import re #引入正则表达式的模块
#创建一个字符串元组供搜索
s = ('xxx','abcxxxabc','xyx','abc','x.x','axa','axxxxa','axxya')
a = filter((lambda s: re.match(r"xxx",s)), s)#match 完全匹配
print(*a) #xxx

a = filter((lambda s: re.search(r"xxx",s)), s)#search 搜索
print(*a) #xxx abcxxxabc axxxxa

a = filter((lambda s: re.search(r"x.x",s)), s)#search 搜索,'.'匹配任意字符
print(*a) #xxx abcxxxabc xyx x.x axxxxa

a = filter((lambda s: re.search(r"x\.x",s)), s)#search 搜索,'\.'就是.了
print(*a) #x.x

a = filter((lambda s: re.search(r"x.*x",s)), s)#search 搜索,*匹配任意次数
print(*a) #xxx abcxxxabc xyx x.x axxxxa axxya

a = filter((lambda s: re.search(r"x.+x",s)), s)#search 搜索,+至少出现一次
print(*a) #xxx abcxxxabc xyx x.x axxxxa

a = filter((lambda s: re.search(r"c+",s)), s)#search 搜索,至少有一个c
print(*a) #abcxxxabc abc

#用[]表示要匹配的特殊字符集,用^表示非
#要用^和$在开头和结尾表示从头到尾不包含c字符
a = filter((lambda s: re.search(r"^[^c]*$",s)), s)#search 搜索,至少有一个c
print(*a) #xxx xyx x.x axa axxxxa axxya


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值