0
点赞
收藏
分享

微信扫一扫

文件操作居然可以这样做?【三】

进击的铁雾 2022-03-20 阅读 78
python

前言

经过前两章的学习,我们对文件操作的读取和写入有了一个认识。如果还需对文件做其他操作,那么这一章将会告诉你该怎么做。希望大家看完之后一定要多多实践

今天不努力,明天变废物!

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()      #关闭文件

运行结果:

压缩到的文件

 解要到的文件


 好了文件操作就介绍到这里了,希望大家能够有所收获,也希望大家能够在今后的学习过程中披荆斩棘。

如果感觉文字不错的话,麻烦三连一下,谢谢!

 

举报

相关推荐

0 条评论