六、python的文件处理
系列目录导航:
章节名称 | 重要程度 |
---|---|
1、python语言基本元素 | ** |
2、基本数据类型 | *** |
3、程序控制结构 | ***** |
4、函数和代码的复用 | ***** |
5、组合数据类型 | ***** |
6、python文件处理 | *** |
7、Python程序设计方法 | ** |
8、python计算生态 | *** |
本期重点:
文本文件和二进制文件 | |
文件打开和关闭的方法 | |
文件读写的方法 |
1、文件的使用
1.1 文件的类型
文件是存储在辅助存储器上的一组数据序列,是数据的集合和抽象
(1)文本文件:由单一特定编码的字符组成,人类可读
(2)二进制文件:直接由01序列组成,没有统一的字符编码
1.2 文件的打开与关闭
Python通过open()函数打开一个文件,并返回一个操作这个文件的变量
文件变量名=open(文件路径,打开模式....)
打开模式如下,前四种和后三种可以组合使用
打开模式 | 含义 |
'r' | 只读模式,若文件不存在会报错 |
'w' | 覆盖写模式,即重写 |
'x' | 创建写模式,若文件已存在会报错 |
'a' | 追加写模式 |
'b' | 二进制文件模式 |
't' | 文本文件模式 |
'+' | 增加同时读写功能 |
例:向test.txt中写入10行内容:
fp = open("test.txt", mode="w", encoding="utf-8")
for i in range(1,11):
fp.write("Hello World!"+str(i)+"\n")
fp.close()
使用重写‘w'时,不需要手动创建test.txt文件,执行代码会自动创建并写入,但值得注意的是,该模式默认不换行,且不支持中文,需引入utf-8
例:用列表加入内容
contents = []
for i in range(1,11):
contents.append("Hello World!"+str(i)+"\n")
with open("text1.txt", "w",encoding="utf-8") as fp:
fp.writelines(contents)
例:读取操作:读取test.txt中内容
with open("text1.txt", "r", encoding="utf-8") as file:
text = file.read()
print(text)
结果为字符串,其中\n会被正常执行
例:使用readlines读取文件内容:
with open("text1.txt", "r", encoding="utf-8") as file:
text = file.readlines()
print(text)
此时返回是每行内容为元素的列表,且\n不会被执行 ,且只读条件下是不可以写入的,会报错
若将上列程序中r改为r+,则可以写入,如:
with open("text1.txt", "r+", encoding="utf-8") as file:
text = file.readlines()
file.write("AAA")
print(text)
但是注意如果不读入text则会在开头覆盖,如果改为w+则改为清空内容 ,有指针
1.3 文件的打开与关闭
文件结束后要用close()方法关闭,释放文件的使用授权
文件变量名.close()
使用with关键字可以更方便地管理文件的打开和关闭
with open(文件路径,打开模式)as 文件变量名:
文件读写操作
当该代码块运行结束后,文件自动关闭
1.4 文件的读写
文件常用读取方法如下:
方法 | 含义 |
f.read (size=-1 ) | 读入整个文件,若size有值,则只读入前size长度的字符串或字节流 |
f.readline (size=-1) | 读入整个文件,若size有值,则只读入前size长度的字符串或字节流 |
f.readlines (hint=-1) | 读入一行内容,若size有值,则只读入前size长度的字符串或字节流 |
f.seek (offset) | 读入所有行,以每行为元素形成一个列表若hint有值,则只读入前hint行改变文件操作指针的位置offset=0表示文件开头,2表示文件结尾 |
如果文件以文本文件方式打开,则读入字符串如果文件以二进制文件方式打开,则读入字节流
文件常用写入方法如下:
方法 | 含义 |
f. write (s) | 写入一个字符串或字节流 |
f.writelines (lines) | 将字符串的列表整体写入文件 |
若采用write()方法,则换行需要自己控制