一.io模块:提供了多个流式处理接口
参见:https://www.jianshu.com/p/ddaac0b9b430 \quad https://blog.csdn.net/taiyangdao/article/details/79156389
1.概述:
Python的io模块提供了多个流式处理接口,用于进行文件流的处理
2.StringIO:
使用"内存缓冲区"(in-memory buffer)进行文本IO:io.StringIO()
#可在字符串修改频繁时使用
#实例1:
>>> import io
>>> str0="aaasdas"
>>> str1=io.StringIO(str0)
#str1可通过io模块中其他方法(即file数据的方法)进行操作,包括修改
>>> str1
<_io.StringIO object at 0x0000018CDCEC61F0>
#实例2:
>>> import io
>>> s = "abcdefghljklmn"
>>> sio = io.StringIO(s)
>>> print(sio.getvalue())#使用IO后,获取新的字符串值
abcdefghljklmn
>>> sio.seek(5)#指针移动到字符串的下标索引5的位置
5
>>> sio.write("胡")#在指针移动后的位置写入新的字符"胡"
1
>>> print(sio.getvalue())#再获取新的字符串值
abcde胡ghljklmn
二.Glob模块
用于查找符合特定规则的文件路径
#注意:
1.只使用3个匹配符:
①"*",匹配任意个任意字符
②"?",匹配单个任意字符
③"[]",匹配指定范围内的字符,如:[0-9]匹配数字/[a-z]匹配字母
④"[!]",匹配不在指定范围内的字符
2.字母不区分大小写
3.不会进行迭代,即匹配上的路径下的路径不会被显示
##############################################################################
glob.glob("<path_format>"):返回所有匹配的文件路径构成的str list
#参数说明:
path_format:指定路径匹配规则;为str
#可以是绝对路径,也可以是相对路径
#实例:
>>> glob.glob("G:\programm\[a-z]*")
['G:\\programm\\C_C++_C#', 'G:\\programm\\Dev-C++项目', 'G:\\programm\\Django项目', 'G:\\programm\\Git', 'G:\\programm\\JavaScript', 'G:\\programm\\PyCharmProject', 'G:\\programm\\Python', 'G:\\programm\\VisualStudioSource']
>>> glob.glob("G:\programm")
['G:\\programm']
>>> glob.glob("G:\??")
['G:\\活动']
>>> glob.glob("G:\p*\[!a-z]")
['G:\\programm\\1']
##############################################################################
glob.iglob("<path_format>"):功能同.glob(),但返回的是生成器
#参数说明:同.glob()
#实例:
>>> a=glob.iglob("G:\p*")
>>> print(a)
<generator object _iglob at 0x0000024CFE7D8048>
>>> for i in a:
... print(i)
...
G:\PPT
G:\Program Files
G:\programm
三.shutil模块
1.功能
shutil模块用于文件/文件夹的拷贝/移动/删除/压缩/解压缩
2.方法:
shutil.copyfile('filename','tofile')
#拷贝文件
#参数说明:
#filename:要拷贝的文件
#tofile:拷贝给的文件(没有直接创建)
shutil.copytree('dirname','todir',ignore=None)
#拷贝文件夹
#参数说明:
#dirname:要拷贝到文件(夹)所在的位置(dirname本身不拷贝,拷贝其中的内容)
#todir:要拷贝到的位置(必须不存在)
#ignore:忽略的文件
# None表示范围内的文件均拷贝
# shutil.ignore_patterns('x')表示x不拷贝
shutil.copytree('G:\programm','G:\A',ignore=shutil.ignore_patterns('*.txt','*.html'))
#拷贝G:\programm中的所有非txt/html文件到G:\A
shutil.make_archive('topath','archive_pattern','path')
#压缩文件到指定位置
#参数说明:
#topath:指定得到的压缩文件的位置;默认为当前目录
#pattern:指定压缩模式
#path:指定要压缩的内容
shutil.make_archive('G:','zip','G:\programm')
#将G:\programm压缩成zip格式放于G:
四.pathlib模块
1.功能:
pathlib模块提供了用于处理文件和目录的面向对象式的API.其功能和os.path相同,但更简洁
易用,故推荐使用该模块替代os.path
2.路径
(1)分类:
路径类分为提供纯计算操作而没有IO的"纯路径",以及继承纯路径但提供IO操作的"具体路径"
(2)文件路径对象:
文件路径:pathlib.Path([*args,**kwargs])
#实例:
>>> pathlib.Path.cwd()
WindowsPath('C:/Users/Euler')#当前路径
>>> pathlib.Path.home()
WindowsPath('C:/Users/Euler')#家目录
>>> path=pathlib.Path("E:\\Program")#创建1个路径
>>> path
WindowsPath('E:/Program')
>>> path.cwd()
WindowsPath('E:/')#当前路径
>>> path.home()
WindowsPath('C:/Users/Euler')#家目录