文件分类
纯文本文件
1.读取和存储时,要遵循某种『字符编码』规范(如:uTF-8等)进行编码和解码,最终以【二进制』的形式存储。
2.『纯文本文件』最终会呈现为:可以直接阅读的文本信息。
3.常见的[纯文本文件』有:.txt.py.md.html等
二进制文件
1.读取和存储时,不涉及字符编码,会按照某种『文件格式规范』把内容转为『二进制】数据进行存储。
2.二进制文件需要由『能够识别其格式的软件】进行解析,最终的呈现形式多种多样(音频、视频、图像、幻灯片等)
3.常见的二进制文件有:.mp3.mp4.doc.ppt.jpg.png等。
路径分类
1.绝对路径:从文件系统根目录(如Windows的D盘)开始完整描述文件位置。
2.相对路径:以当前工作目录为参照,使用 ... 表示上级目录,描述目标文件的相对位置。
读取文件
Python中操作文件的标准流程:
1.创建[文件对象」
2.操作文件(读取、写入等)
3.关闭文件
读取操作1:read方法使用说明
# 1.read(size)中的 size 是可选参数。 # 若不传递size参数,表示:读取文件中所有的内容(注意内存占用!)。 # 若传递了size参数,表示:读取文件中指定个数的字符,或指定大小的字节。 # 2.read 会从上一次read 的位置继续读取(指针思想),若到达文件末尾后继续读取,将返回空字符串。 import time # 1.创建[文件对象] # file=open(file='a.txt',mode='rt',encoding='utf-8') file = open('a.txt','rt', encoding='utf-8') # file = open('D:/python/PythonProject1/test02/a.txt','rt', encoding='utf-8') # file = open('D:/python/PythonProject1/test02/b.png','rb') # 2.操作文件(读取、写入等) # 多次调用read逐步读取文件 # r1 = file.read(0) # r2 = file.read(3) # r3 = file.read(4) # r4 = file.read() # print(r1,end='') # print(r2,end='') # print(r3,end='') # print(r4,end='') # 用循环配合多次read(对内存友好) while True: result=file.read(10) if result=='': break print(result,end='') # 3.关闭文件 file.close() # time.sleep(10000)读取操作2: readline 方法使用说明
# 1.readline(size)中的 size 是可选参数. # 若不传递size参数,表示:读取当前这一行所有的内容。 # 若传递了size参数,表示:表示读取当前行时,最多能读取的字符数,或字节数(size不是行数) # 2.readline方法,也是从上一次位置继续读取,若到达文件末尾后继续读取,也是返回空字符串。 # 1.创建[文件对象] file = open('a.txt','rt', encoding='utf-8') # 2.操作文件(读取、写入等) # 依次调用readline读取 r1=file.readline() r2=file.readline() r3=file.readline() r4=file.readline() print(r1.strip()) print(r2.strip()) print(repr(r3)) print(repr(r4)) # 通过循环配合readline逐行读取 while True: line=file.readline() if line=='': break print(line,end='') # print(line.strip()) # 3.关闭文件 file.close()读取操作3:使用for循环直接遍历文件对象
# 1.创建[文件对象] file = open('a.txt','rt', encoding='utf-8') # 2.操作文件(读取、写入等) for line in file: print(line,end='') # 3.关闭文件 file.close()读取操作4:使用文件对象的readlines方法,一次性按“行”读完,返回一个列表
# 1.readlines(hint)中的hint是可选参数。 # 若不传递hint参数,表示:读取当前文件的所有行。 # 若传递了hint 参数,表示:期望读取的【字符个数 或 字节数的上限】(hint不是行数) # 2.注意:由于readlines是一次性读取文件的所有内容,所以不适合读取体积较大的文件。 # 1.创建[文件对象] file = open('a.txt','rt', encoding='utf-8') # 2.操作文件(读取、写入等) result=file.readlines() print(result) # 3.关闭文件 file.close()✨✨✨最佳实践:使用with上下文管理器,结合for循环遍历,逐行读取文件
with open('a.txt','rt', encoding='utf-8') as file: # result=file.read() # print(result) for line in file: print(line,end='')
文件操作的核心一 open函数:它可以打开或创建文件,且支持多种操作模式,返回信是『文件对象』
open函数最常用的三个参数如下:
1.file:要操作的文件路径
2.mode:文件的打开模式
r:读取(默认值)
w:写入,并先截断文件
x:排它性创建,如果文件已存在,则创建失败
a:打开文件用于写入,如果文件存在,则在文件末尾追加内容
b:二进制模式
t:文本模式(默认值)
+:打开用于更新(读取与写入)
3.encoding:字符编码