一、文件分类
文本文件:由单一特定编码组成的文件,比如utf-8
编码、GBK
编码等,.py
与 .txt
等都属于文本文件。但是文本文件本质上是以二进制形式存储的。
二进制文件:直接由 0 和 1 组成,没有统一的字符编码。比如:.png
与 .avi
等都属于二进制文件。
二、文件打开模式
要获取一个文件对象,只需要使用 Python 内置 的 open()
函数即可,在 open()
函数中可以指定要打开的文件名
f = open("1.txt", "r")
上面open()
函数第一个参数表示文件名,第二个参数表示打开文件的模式,r
表示只读。
下面是一些文件打开模式
文件打开模式 | 描述 |
---|---|
r | 只读模式,默认的打开模式,如果文件不存在报错 |
w | 覆盖写模式,文件不存在创建,存在完全覆盖 |
x | 创建写模式,文件不存在创建,存在报错 |
a | 追加写模式,文件不存在创建,存在在最后追加内容 |
b | 二进制文件模式 |
t | 文本文件模式 |
+ | 与 ‘r w x a’一起使用,在原基础上增加读写功能 |
三、读文件
文件读取涉及到的函数:
f.read(size)
:默认读取文件的全部内容,如果指定参数值,读取前size
个长度f.readline(size)
:默认读取一行内容,如果指定参数值,读取该行前size
个长度f.readlines()
:读入文件的所有行,以行为分割点,返回一个列表
按文本格式一次全部读入:
f = open("test.txt", "rt", encoding="utf-8") # encoding 用于指定打开文件的编码格式
txt = f.read()
print(txt)
f.close()
按二进制格式一次全部读入:
f = open("test.txt", "rb") # 十六进制表示的字节
分行读入:
f = open("test.txt", "rt", encoding="utf-8")
txt = f.readlines()
for line in txt:
print(line)
f.close()
四、写文件
文件写入涉及到的函数:
f.write(str)
:向文件写入一个字符串或字节流f.writelines(list)
:将一个列表中的元素写入文件f.seek(offset)
:改变当前指针的位置,offset
的含义如下:0-位于文件的开头处,1-位于当前位置,2-位于文件的结尾
写文件:
f = open("test.txt", "a", encoding="utf=8") # 'a' 表示追加写模式,不会覆盖原来的文本内容
ls = ["\n嘿嘿~", "哈哈~"]
f.writelines(ls) # 将列表中的元素写入文件
f.close()
读写文件:
f = open("test.txt", "a+", encoding="utf=8") # 'a+' 表示在 'a' 的基础上增加读能力
ls = ["\n嘿嘿~", "哈哈~"]
f.writelines(ls)
f.seek(0, 0) # 将文件指针指向文件开始的位置
for line in f.readlines():
print(line)
f.close()