Python文件操作

最近在网课中学习了Python的文件操作,所以把老师上课讲的都记录了下来,作为笔记

打开文件

可直接使用open函数,使用形式为

1
open(文件地址,操作形式)

操作形式有以下几个

1
2
3
4
5
6
7
r 只读模式
w 覆盖写模式
x 创建写模式
a 追加写模式
b 二进制文件模式
t 文本文件模式
+ 与r/w/x/a一同使用,在原功能基础上增加读写功能

当操作形式参数为空时,默认为只读模式与文本文件模式

还有几个可选参数,例如encoding,可设置编码格式

看下面这个例子

1
fh = open("D:/blog/文本1.txt", "rt", encoding = "utf-8")

这个语句就是以只读文本文件的模式,编码格式为”utf-8”,打开文本1

注意:第一个参数中的文件地址,”\"要以”/“或”\\“来表示

关闭文件

用close函数即可

1
fh.close()

注意:文件打开后一定要关闭,否则容易出问题

文件读取

有这几个函数

1
2
3
a.read(size = -1) 读入全部内容,如果给出参数,读入前size长度
a.readline(size = -1) 读入一行内容,如果给出参数,读入该行前size长度
a.readlines(hint = -1) 读入文件所有行,以每行为元素形成列表,如果给出参数,读入前hint行

看下面一个例子

1
2
3
4
5
6
7
8
9
fh = open("D:/blog/文本1.txt", "rt", encoding = "utf-8")
x = 0
while True:
line = fh.readline()
if(len(line) == 0 and x >= 10):
break
print(line)
x += 1
fh.close()

这段代码的作用便是一行行的读取文本文件,并将每行输出,当读到第十行以后的空行时,停止读取

文件的写入

有这几个函数

1
2
fh.write(s) 向文件写入一个字符串或字节流
fh.writelines(lines) 将一个元素全为字符串的列表写入文件(拼接以后写入到一行当中)

看一个例子

1
2
3
4
5
6
7
8
data = "一起学python"
fh = open("D:/blog/文本1.txt", "w")
fh.write(data)
fh.close()
data2 = "学好python"
fh2 = open("D:/blog/文本1.txt", "w")
fh2.write(data2)
fh2.close()

运行以后打开文件,会发现结果是这样的

因为以“w”模式打开文件,会将原内容覆盖

想要正确读写文件,只需改变文件打开模式为”a“或”a+“

1
2
3
4
5
6
7
8
data = "一起学python"
fh = open("D:/blog/文本1.txt", "w")
fh.write(data)
fh.close()
data2 = "学好python"
fh2 = open("D:/blog/文本1.txt", "a+")
fh2.write(data2)
fh2.close()

结果是这样

注意:打开文件后一定要关闭文件,否则文件内容无法更新

改变文件操作指针位置

1
fh.seek(offset) 改变当前文件操作指针的位置,offset含义:0-文件开头 1-当前位置 2-文件结尾

看一个例子

1
2
3
4
5
6
7
fh = open("D:/blog/output.txt", "w+")
ls = ["中国", "法国", "美国"]
fh.writelines(ls)
fh.seek(0)
for line in fh:
print(line)
fh.close()

代码作用是将写入文件的内容输出

注意:fh.seek(0)一定要添加,否则什么都输出不了,因为没有改变位置