1. 普通文件(无后缀名)
1.1 文件操作流程
- 打开文件,得到文件句柄并赋值给一个变量
- 通过句柄对文件进行操作
- 关闭文件
现有法兹乐队歌曲《控制》歌词文件如下
我只指童心之源
童心是成人的源泉
我只指望一世光阴
贯穿对自然的崇敬
天边彩虹映入眼帘
我的心为之雀跃
我只指望一世光阴
贯穿对自然的崇敬
时间是否还能够等着我
时间是否还能够控制我
时间是否还能够等着我
时间是否还能够控制我
控制 我控制 我控制你
控制 我控制 我控制自己
控制 我控制 我控制你
控制 我控制 我控制自己
f = open('C:\\Users\\air14\\Desktop\\控制', encoding='utf8')
content = f.read()
f.close()
content
# '我只指童心之源\n童心是成人的源泉\n我只指望一世光阴\n贯穿对自然的崇敬\n天边彩虹映入眼帘\n我的心为之雀跃\n我只指望一世光阴\n贯穿对自然的崇敬\n时间是否还能够等着我\n时间是否还能够控制我\n时间是否还能够等着我\n时间是否还能够控制我\n控制 我控制 我控制你\n控制 我控制 我控制自己\n控制 我控制 我控制你\n控制 我控制 我控制自己'
注意windows系统中中文编码为gbk,而文件是以utf8保存的,打开文件时open函数是通过操作系统打开的文件,win默认的是gbk编码,所以直接打开会乱码,需要在open函数中指定encoding=‘utf8’
1.2 文件打开模式
这里只介绍简单的打开模式,待介绍如何写入后,再介绍读写的打开模式
文件的打开模式 | 描述 |
---|---|
r | 只读模式打开,默认值,若文件不存在,返回FileNotFoundError |
t | 以文本文件格式打开,默认值 |
w | 覆盖写模式,文件不存在则创建,存在则全部覆盖,慎用 |
x | 创建写模式,文件不存在则创建,存在则返回FileExistError |
a | 追加写模式,文件存在则创建,存在则在文件最后追加内容 |
b | 以二进制格式打开 |
1.3 文件内容的读取
操作方法 | 描述 |
---|---|
f.read(size=-1) | 读取全部内容,如果给出参数,读取前size长度 |
f.readline(size=-1) | 读取一行内容,如果给出参数,读取该行前size长度,可以和for循环结合使用 |
f.readlines(hint=-1) | 读取文件所有行,以每行内容为元素形成列表,如果给出参数,读取前hint行 |
with open('C:\\Users\\air14\\Desktop\\控制', 'r', encoding='utf8', ) as f:
print(f.read())
print('-------------------')
f.seek(0) # 光标位于文件末尾,需置0
for i in range(3):
print(f.readline())
print('-------------------')
f.seek(0) # 光标位于文件末尾,需置0
print(f.readlines())
我只指童心之源
童心是成人的源泉
我只指望一世光阴
贯穿对自然的崇敬
天边彩虹映入眼帘
我的心为之雀跃
我只指望一世光阴
贯穿对自然的崇敬
时间是否还能够等着我
时间是否还能够控制我
时间是否还能够等着我
时间是否还能够控制我
控制 我控制 我控制你
控制 我控制 我控制自己
控制 我控制 我控制你
控制 我控制 我控制自己
我只指童心之源
童心是成人的源泉
我只指望一世光阴
[‘我只指童心之源\n’, ‘童心是成人的源泉\n’, ‘我只指望一世光阴\n’, ‘贯穿对自然的崇敬\n’, ‘天边彩虹映入眼帘\n’, ‘我的心为之雀跃\n’, ‘我只指望一世光阴\n’, ‘贯穿对自然的崇敬\n’, ‘时间是否还能够等着我\n’, ‘时间是否还能够控制我\n’, ‘时间是否还能够等着我\n’, ‘时间是否还能够控制我\n’, ‘控制 我控制 我控制你\n’, ‘控制 我控制 我控制自己\n’, ‘控制 我控制 我控制你\n’, ‘控制 我控制 我控制自己’]
1.4 文件的写入
操作方法 | 描述 |
---|---|
f.write() | 向文件写入内容 |
f.writelines() | 将一个元素全为字符串的列表写入文件 |
1.5 几种读写模式打开文件
操作方法 | 描述 |
---|---|
r+ | 1. 文件存在,打开文件,文件指针定位到文件开始位置,如果写则是覆盖写;2. 文件不存在, 则报错文件不存在 |
w+ | 1. 文件存在,则清空(也即写入空); 2. 文件不存在,则创建文件 ; 3. 文件流定位到开始位置, 所以read() 会得到空 |
a+ | 1. 文件存在,打开文件,文件指针定位到文件开始位置,但不清空;2. 文件不存在,创建文件; 3. 打开后读取时,在文件开头位置,4. 写入时,添加到文章末尾,并且指针位于添加后的末尾,所以再次读取会乱码。 |