前言
经过前两章的学习,我们对文件操作的读取和写入有了一个认识。如果还需对文件做其他操作,那么这一章将会告诉你该怎么做。希望大家看完之后一定要多多实践
今天不努力,明天变废物!
os模块
os模块有什么用呢?
os模块可以直接对操作系统进行操作,同时也可以直接调用操作系统的可执行目录,文件……
话说千万遍,不如实操一遍。
首先介绍一下os模块的两个方法,体验一下os模块,然后我们再深入的了解os模块。
●os.system:可以直接调用系统的命令,示例3-1
●os.startfile:可以直接调用可执行文件,示例3-2
示例3-1
import os
os.system('notepad.exe') #调用记事本
运行结果:
示例3-2
import os
#直接调用可执行文件
os.startfile(r"D:\qqyinyeu\QQMusic\QQMusic.exe") #调用QQ音乐
运行结果:
现在我们开始介绍os模块对目录或文件的操作。
os模块的方法有很多,我们了解几个常用的模块。
方法名 | 描述 |
remove() | 删除指定的文件 |
rename() | 重命名文件或目录 |
sep | 当前操作系统所使用的路径分隔符 |
stat() | 返回文件的所有属性 |
walk() | 遍历目录 |
listdir() | 返回目录下的子文件或目录 |
mkdir() | 创建目录 |
makedirs() | 创建多个目录 |
rmdir() | 删除目录 |
removedirs() | 删除多级目录 |
getcwd() | 返回当前路径 |
chdir() | 改变当前目录 |
由于方法有点多,我就不一个一个展示了。
示例3-3
import os
print(os.getcwd()) #返回当前文件路径
print(os.name) #获取操作系统的信息
print(os.sep) #路径分隔符
print(repr(os.linesep)) #换行符
print(os.stat('os01.py')) #获取文件的信息
print()
print()
# os.chdir('d:') #改变当前目录
# os.mkdir('文字') #创建目录
# os.rmdir('文字') #删除目录
# os.makedirs('文字/甲骨文/楷体') #创建多级目录
# os.removedirs('文字/甲骨文/楷体') #删除多级目录
# os.makedirs('../年龄阶段/儿童/青少年/成年/老年') #前面有两个../意思是指的上一级目录创建
# os.makedirs('年龄阶段/儿童/青少年/成年/老年')
# os.rename('年龄阶段','人生') #重命名文件或目录
# dir = os.listdir('人生') #返回子文件的名称
# print(dir)
我想细心的同学都发现,还有一个方法没有写吧,在后面我会为大家介绍的,请接着往下看。
os.path模块
os.path模块可以对文件进行路径连接、文件判断……
方法 | 描述 |
isabs() | 路径是否绝对路径 |
isdir() | 是否为目录 |
isfile() | 是否为文件 |
exists() | 是否存在 |
abspath() | 返回绝对路径 |
splitext() | 分割文件的扩展名 |
split() | 对路径进行分割 |
walk() | 遍历目录 |
join() | 连接路径 |
getmtime() | 返回文件的最后修改时间 |
getatime() | 返回文件的最后访问时间 |
getctime() | 返回文件的创建时间 |
getsize() | 返回文件的大小返回目录的路径 |
同样,方法太多,就不一一展示了哈
示例3-4
运行结果:
from os import path
print('返回绝对路径: ',path.abspath('file01')) #返回绝对路径
print('是否为绝对路径: ',path.isabs("e:/test_os")) #是否为绝对路径
print('是否为目录: ',path.isdir('file01')) #是否为目录
print('是否为文件: ',path.isfile('os01.py')) #是否为文件
print('文件是否存在: ',path.exists('file01')) #文件是否存在
print(path.exists('file02'))
print('返回文件的大小: ',path.getsize('file01')) #返回文件的大小
print('输出所在目录:',path.dirname('e:/os01.py')) #输出所在目录
print('最后修改时间: ',path.getmtime('file01')) #最后修改时间
print('最后访问时间: ',path.getatime('file01')) #最后访问时间
print('创建时间: ',path.getctime('file01')) #创建时间
path01 = path.abspath('file01')
path02 = path.abspath('os01.py')
print('split: ',path.split(path01)) #对路径进行分割
print('splitex: ',path.splitext(path02)) #分割扩展名
print('连接文件: ',path.join("paht01","path02")) #连接文件
示例3-3和示例3-4我都没有展示walk()方法,那么这个方法究竟有什么用呢?
walk()方法
walk()的作用是遍历所有的子目录和子文。
walk()有三个返回值
●指定目录的路径
●目录下的所有子目录
●目录下的所有文件
废话不多说,直接实操
示例3-5
import os
path = os.getcwd() #返回当前目录
print(path)
a = os.walk(path)
for path,dir,file in a :
print(path)
print(dir)
print(file)
运行结果:
运行完3-5之后,我们发现返回的都是列表,既然是列表就可以遍历。
示例3-6
import os
path = os.getcwd() #返回当前目录
print(path)
a = os.walk(path)
for x,y,z in a: #这里x:目录的路径 y:目录下的所有文件夹 z:目录下所有文件
for dir in y:
print('目录: ',dir)
for file in z:
print('文件: ',file)
运行结果:
这样还不能够明确看出所有子目录子文件的路经,结合上面所学的join()方法连接路径,直接上操作
示例3-7
import os
import os.path
abc = []
path = os.getcwd() #返回当前目录
a = os.walk(path)
for path,dir,file in a:
for x in dir:
abc.append(os.path.join(path,x))
for y in file:
abc.append(os.path.join(path,y))
for www in abc:
print(www)
运行结果:
这样我们每个文件或目录的路径都能清晰明了了。
都看到这了先点个赞呗
shutil模块和zipfile模块
在这里介绍这两个模块的拷贝文件\目录、解压和压缩
shutil模块的拷贝文件的方法:示例3-8
●copyfile():拷贝文件,需要传两个参数,第一个是被拷贝的文件名,第二个是拷贝到后的文件名。
shutil模块拷贝目录的方法:示例3-9
●copytree():拷贝目录,需要传两个参数,第一个是需要被拷贝的目录名,第二个是拷贝到后的目录名。
shutil模块压缩文件的方法:示例3-10
●make_archive():压缩文件,需要传入三个参数,第一个是压缩到的位置和名字,第二个是格式,第三个是被压缩的路径
zipfile模块的压缩和解压缩文件的方法:
示例3-10-1
示例3-8
import shutil
shutil.copyfile("test01.txt",'copy_test01') #拷贝文件
运行结果:
示例3-9
import shutil
shutil.copytree('person/儿童','人') #拷贝目录
运行结果:
除此之外,还可以过滤掉不想拷贝的文件
示例3-9-1
import shutil
shutil.copytree('person/儿童','人类',ignore=shutil.ignore_patterns('*.txt','*.html','*.mp4')) #拷贝目录
运行结果:
注:已创建的目录不可在创建。
示例3-10
import shutil
shutil.make_archive('人类/HTML','zip','person/儿童') #压缩
运行结果:
示例3-10-1
import zipfile
a = zipfile.ZipFile("e:/a.zip",'w') #压缩到指定的位置
a.write('copy_test01') #需要压缩的文件
a.close() #关闭文件
a1 = zipfile.ZipFile("e:/a.zip",'r') #指定解压的文件
a1.extractall('人类') #解压到指定的目录里
a1.close() #关闭文件
运行结果:
压缩到的文件
解要到的文件
好了文件操作就介绍到这里了,希望大家能够有所收获,也希望大家能够在今后的学习过程中披荆斩棘。
如果感觉文字不错的话,麻烦三连一下,谢谢!