文件的基本操作
一、打开文件 - open()
open()
函数用于打开文件- 函数调用格式:
myfile = open(filename [, mode])
filename
– 文件名字符串mode
– 文件读写模式
模式 | 描述 |
---|---|
t | 文本模式 (默认)。 |
x | 写模式,新建一个文件,如果该文件已存在则会报错。 |
b | 二进制模式。 |
+ | 打开一个文件进行更新(可读可写)。 |
U | 通用换行模式(不推荐)。 |
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
1、以只读方式(r)打开文件 - 默认方式
- 新建两个文件
- 在 123.txt 中输入一些内容
myfile = open('123.txt', 'r') # r 可以不加
print(myfile)
for line in myfile:
print(line)
输出结果:
<_io.TextIOWrapper name='123.txt' mode='r' encoding='cp936'>
I love python
I love java
I learn python
2、以只写方式(w)打开文件
- 如果打开的文件存在,只写模式会清空原有内容
- 如果不存在,则新建一个
myfile = open('123.txt', 'w')
myfile.write('I love you')
3、以追加方式(a)打开文件
- 以追加方式打开文件之前先关闭(
close()
)文件
myfile = open('123.txt', 'a')
myfile.write('I love you, too')
4、以可读可写方式(w+)打开文件
myfile = open('123.txt', 'w+')
myfile.write('I love you, too')
myfile.seek(0) # 将指针指向第0个字符
print(myfile.readline())
输出结果:
I love you, too
二、关闭文件 - close()
close()
用于关闭文件,释放内存- 调用格式:
myfile.close()
三、文件刷新 - flush()
flush()
可将缓冲区内容写入文件,但不关闭文件- 调用格式:
myfile.flush()
四、读取文件内容
1、读取整个文件内容 - myfile.read(n)
- 如果 n 超过文件的长度,则读取所有内容
myfile = open('123.txt')
content = myfile.read() # 将整个文件内容读入一个字符串
print(content)
print(len(content)) # 文件的长度,其中包括空格
myfile.seek(0) # 将指针指向第0个字符
content_2 = myfile.read(8) # 读取前8个字符
print(content_2)
输出结果:
I love you
I love you, too
26
I love y
2、读取文件一行内容 - myfile.readline(n)
myfile = open('123.txt')
line1 = myfile.readline() # 读取第一行
line2 = myfile.readline() # 读取第二行
myfile.seek(0) # 将指针指向第0个字符
line1_5 = myfile.readline(5) # 读取第一行前五个字符
print(line1, line2, line1_5, sep="\n")
输出结果:
I love you
I love you, too
I lov
3、读取全部行 - myfile.readlines()
- 将整个文件内容读入一个字符串列表,每一行为一个字符串
myfile = open('123.txt')
lines = myfile.readlines()
print(lines)
输出结果:
['I love you\n', 'I love you, too']
4、写入字符串到文件 - myfile.write(string)
- 将字符串写入到文件指针位置,返回写入的字符个数
myfile = open('123.txt', 'w+')
myfile.write('I love you, too')
myfile.seek(2)
myfile.write('dont')
myfile.seek(0)
content = myfile.read()
print(content)