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

来源:互联网 发布:js定义json数组并赋值 编辑:程序博客网 时间:2024/06/05 15:02
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.6import 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) #xxxa = filter((lambda s: re.search(r"xxx",s)), s)#search 搜索print(*a) #xxx abcxxxabc axxxxaa = filter((lambda s: re.search(r"x.x",s)), s)#search 搜索,'.'匹配任意字符print(*a) #xxx abcxxxabc xyx x.x axxxxaa = filter((lambda s: re.search(r"x\.x",s)), s)#search 搜索,'\.'就是.了print(*a) #x.xa = filter((lambda s: re.search(r"x.*x",s)), s)#search 搜索,*匹配任意次数print(*a) #xxx abcxxxabc xyx x.x axxxxa axxyaa = filter((lambda s: re.search(r"x.+x",s)), s)#search 搜索,+至少出现一次print(*a) #xxx abcxxxabc xyx x.x axxxxaa = filter((lambda s: re.search(r"c+",s)), s)#search 搜索,至少有一个cprint(*a) #abcxxxabc abc#用[]表示要匹配的特殊字符集,用^表示非#要用^和$在开头和结尾表示从头到尾不包含c字符a = filter((lambda s: re.search(r"^[^c]*$",s)), s)#search 搜索,至少有一个cprint(*a) #xxx xyx x.x axa axxxxa axxya


1 0
原创粉丝点击