目录
文件编码
文件的读取
打开文件
mode常用的三种基础访问模式
读取文件
关闭文件
with open语法
文件的写入操作
文件综合案例
a.txt内容
代码实现
b.txt文件
目录操作
前言
os模块
具体方法
os.path模块
具体方法
文件编码
前言:由于计算机只能识别0和1,所以我们丰富的文本文件通过使用编码技术(密码本)将内容翻译成0或1存入
编码技术:即翻译的规则,记录了如何将内容翻译成二进制,以及如何将二进制翻译成可识别的内容
注意:计算机中有许多可用的编码(UTF-8、GBK、Big5)等,不同的编码,将内容翻译的二进制也是不同的,所以要使用正确的编码,才能对文件进行正确的读写操作
文件的读取
前言:内存中存放的数据在计算机关机后就会消失,要想长久的保存数据,就要使用硬盘、光盘、U盘等设备。为了便于数据的管理和检索因此引入了文件的概念
注意:
- 一篇文章、一段视频、一个可执行程序,都可以被保存为一个文件,并赋予一个文件名
- 操作系统以文件为单位管理磁盘中的数据。
- 文件可分为文本文件、视频文件、音频文件、图像文件、可执行文件等多种类别
- 在生活中,文件的操作主要包括打开、关闭、读、写等操作
打开文件
语法:文件对象=open(name,mode,encoding=编码格式)
参数解释
- name:要打开得目标文件名的字符串(可以包含文件所在的具体路径)
- mode:设置打开文件的模式(访问模式):只读、写入、追加等
- 编码格式:文件编码的格式(推荐使用UTF-8)
注意:
- 里面传入的三个参数均为字符串格式
- 因为encoding并不是第三个参数,所以不能用顺序传参
mode常用的三种基础访问模式
读取文件
语法:变量=文件对象.read(num)
解释:num表示要从文件中读取的数据长度(单位是字节),若没有传入num,那么就表示读取文件所有的数据
语法:变量=文件对象.readlines()
解释:readlines可以按照行的方式把整个文件的内容进行一次性读取,并且返回的是一个列表,其中的每一行数据为一个元素
语法:变量=文件对象.readline()
解释:一次读取一行内容
for循环读取文件行
for line in 文件对象:
print(line)
理解:每一个line临时变量,就记录了文件的一行数据
注意:我们在读取文件时,只要该文件对象打开之后,后面不管调用什么文件读取方法,他都会续接上一次读取文件的方法。
关闭文件
语法:文件对象.close()
注意:若不调用close,同时程序没有停止运行,那么这个文件将一直被python程序占用
with open语法
with open(name,mode,encoding) as 文件对象变量:
f.readlines()
注意:通过with open的语句块对文件进行操作,可以在操作完成后自动关闭close文件,避免遗忘掉close方法
文件的写入操作
写入文件到内存:文件对象.write(写入的内容)
文件刷新:文件对象.flush()
注意
- 使用open函数对于w模式写入文件的时候,文件不存在则会创建文件,文件存在则会覆盖原文件内容;对于a模式文件不存在则会创建文件,文件存在则会在源文件基础上追加内容
- 这里a参数的文件追加是关闭文件后也可以追加,若没关闭文件对于w参数调用写文件始终是追加模式
- 直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区
- 当调用flush/close的时候,内容会真正写入硬盘
- 这样做的目的是避免频繁的操作硬盘,导致效率下降(攒一堆,一次性写入硬盘)
文件综合案例
需求:将a.txt文件中的内容备份到b.txt文件中
a.txt内容
代码实现
#打开a.txt文件
fr=open("D:/test/a.txt","r",encoding="UTF-8")
#打开b.txt文件,准备写入
fw=open("D:/test/b.txt","w",encoding="UTF-8")
#读取a.txt文件的所有数据
for line in fr:
#将每次读取的数据写入b.txt
fw.write(line)
#将内存中的数据刷新至硬盘
fw.flush()
#关流
fw.close()
fr.close()
b.txt文件
目录操作
前言
- os模块是python内置与操作系统功能和文件系统相关的模块,该模块中的语句的执行结果通常与操作系统有关,在不同操作系统上运行,得到的结果可能不一样
- os模块与os.path模块用于对目录或文件进行操作,其是python系统自带的一个模块
os模块
使用前:import os
具体方法
import os
#执行命令行语句
os.system("python -V")
#直接启动文件
os.startfile("D:/test/a.txt")
#返回指定路径下的文件和目录信息
print(f"文件和目录信息:{os.listdir('D:/app/youdao')}")
#创建目录
os.mkdir("D:/test/dir1")
#创建多级目录
os.makedirs("D:/test/dir2/dir3")
#删除目录
os.rmdir("D:/test/dir1")
#删除多级目录
os.removedirs("D:/test/dir2/dir3")
#设置当前工作目录
os.chdir("D:/test")
#当前的工作目录
print(f"当前的工作目录为{os.getcwd()}")
os.path模块
使用前:import os.path
具体方法
import os.path
#获取当前位置的绝对路径(end.py为当前位置的文件)
print(os.path.abspath("end.py"))
#判断当前文件夹下的文件或目录是否存在
print(os.path.exists("end.py"))
#将目录与目录或目录与文件名拼接
print(os.path.join("D\python", "app.txt"))#D\python\app.txt
#分离路径和文件名
print(os.path.split("D:\projects\end.py"))#('D:\\projects', 'end.py')
#分离文件名和扩展名
print(os.path.splitext("app.py"))#('app', '.py')
#从一个目录中提取文件名
print(os.path.basename("D:\projects\end.py"))#end.py
#从一个目录中提取目录不包括文件名
print(os.path.dirname("D:\projects\end.py"))#D:\projects
#判断是否为目录(有end.py不是)
print(os.path.isdir("D:\projects\end.py"))#False