文章目录
Python文件处理
前言:open()
方法会返回一个file对象,基本语法格式:
open(filename, mode)
- filename:要访问的文件的路径,可以是绝对路径,也可以是相对路径
- model:模式实参,决定了以什么样的模式打开文件,下面的2.1中会详细介绍
1. 读文件中的数据
1.1 直接读文件中的数据
with open("text.txt") as file_object:
contents = file_object.read()
print(contents)
上面的代码中,open()
方法接收一个参数,我们上面的代码中是一个相对路径,它会在当前的Python程序的根目录中寻找text.txt这个文件,并将其打开,返回一个表示文件的对象,我们在上面的代码中将这个对象赋给了file_object这个对象,方便我们接下来的处理。值得注意的是,open()
方法也可以接收一个绝对路径,但无论接收的是相对路径还是绝对路径,如果不存在这个文件,会出错。得到一个表示这个文件的对象(file_object)后,使用read()
方法将这个文件中的所有内容读取出来,并将其当做一个字符串赋值给contents,然后将这个字符串打印出来。
注意:如果在文件路径中直接使用反斜杆,将引发错误,因为反斜杠是转义符,例如:\t会被解读为制表符。所以要使用\\或/。
1.2 读取文件中的一行数据
readline()
方法会从文件中读取单独的一行,如果readline()
返回的是一个空字符串,说明已经读取到文件的最后一行。
filepath = 'text.txt'
with open(filepath, 'r') as file_object:
print(file_object.readline())
上面的代码只会读取text.txt文件中的第一行。
1.3 逐行读取文件中的数据
filepath = "text.txt"
with open(filepath) as file_object:
for line in file_object:
print(line.rstrip())
注意:在文件中,每一行的末尾都有一个看不见的换行符,使用
print()
方法时也会将在末尾加上一个换行符,因此,每行的末尾都有两个换行符,要使用rstrip()
方法去掉这些空白行。
1.4 创建一个包含文件各行内容的列表
要将文件中的各行内容存储在列表中,可以使用readlines()
方法:
filepath = "text.txt"
with open(filepath) as file_object:
lines = file_object.readlines()
for line in lines:
print(line.rstrip())
注意:读取文本文件时,Python将其中的所有文本都认为是字符串,如果要将其当做数使用,要使用函数
int()
或float()
将其转化为整数或浮点数。
2. 写入文件
2.1 写入空文件
要将文本写入空文件,只需要在调用open()
时给它提供另一个参数’w’:
filepath = 'text.txt'
with open(filepath, 'w') as file_object:
file_object.write("I love python")
在上面的例子中,我们为open()
提供了两个实参,第一个是要打开的文件的位置,第二个是’w’,'w’是指以写入模式打开文件。打开文件时,可以指定以下任意一种模式:
-
r : 读取模式: 文件已只读的方式打开
-
r+ : 读写模式:文件可读也可写
-
w: 写入模式:文件只能写,不能读,文件原有的内容将会被覆盖
-
w+: 文件能读能写,文件原有的内容会被覆盖
-
a : 附加模式:文件能写不能读,和’w’不同的是,以添加的方式写入文件,不会覆盖原有的内容
-
a+:文件能读能写,以添加的方式写入文件,不会覆盖原有的内容
注意:
- 当文件不存在时,w, w+, a, a+ 都会创建文件
- 以r+ 模式打开文件时,指针指在文件的头部,类似于insert
- 以a或a+打开文件时,指针指在文件的末尾
注意:如果没有模式实参,Python将以默认的只读模式打开文件。Python只能将字符串写入文件中,如果要将数值写入文件中,要用函数
str()
将数值转化为字符串,再将字符串写入文件。
2.2 写入一行文本后换行
write()
方法不会在写入的文本末尾添加换行符,所以,以下代码执行之后:
filepath = 'text.txt'
with open(filepath, 'w') as file_object:
file_object.write("I love python.")
file_object.write("I love java.")
text.txt中的内容将是这样的:
I love python.I love java.
如果想要在写入一行后就换行,只需要在write()
方法中在写入的内容的末尾加上换行符\n
:
filepath = 'text.txt'
with open(filepath, 'w') as file_object:
file_object.write("I love python.\n")
file_object.write("I love java.\n")
结果就是你想要的啦:
I love python.
I love java.
2.3 在文件中添加信息
上面我们说过,‘w’(写入模式)会覆盖掉文件原有的信息,如果不想覆盖掉原有的信息,只是向文件中添加新的信息,可以使用附加模式(‘a’),代码也很简单,只需要将open()
方法中的模式参数换为’a’:
filepath = 'text.txt'
with open(filepath, 'a') as file_object:
file_object.write("I love python.\n")
file_object.write("I love java.\n")
感谢你的阅读!