对文件的操作分为 3 步:
- 打开文件;
f = open('望月怀古', 'r', encoding='utf8') # 路径可以写绝对路径,也可以写相对路径;
- 操作
- 关闭文件; f.close()
只读模式:r
f = open('望月怀古', 'r', encoding='utf8') data = f.read(5) # 读取 5 个字符: 1 个汉字和 1 个 英文字母都算是 1 个字符 print(data) f.close()
写模式:w。
# w:写操作。 在 f 对象被创建的时候就会将原来的文件清空,重新写操作。 # 如果没有该文件,则先会自动创建一个,在进行写入 f = open('望月怀古1', 'w', encoding='utf8') f.write('望月怀古') f.write(' 张九龄') # 会紧跟在上一句之后写入。 f.close()
在文件后继续添加:a
# a:append 直接在文件后面追加 f = open('望月怀古1', 'a', encoding='utf8') print(f.fileno()) # 打印文件句柄 f.write('\nHello world') f.close()
文件操作方法:
1. readline()
# 读取一行数据。 读取一行后,光标移动了,如果文件没有被关闭,下次会从光标处继续读 f = open('望月怀古', 'r', encoding='utf8') f.readline()
2. readlines()
print(f.readlines()) # 读取所有行,放进一个列表中输出 # readlines 读取出来的列表会被放进内存中进行保存,因此当文件很大时并不建议使用此方法。使用 for i in f,即可对每一行做输出 f = open('望月怀古', 'r', encoding='utf8') # for i in f.readlines(): 不建议使用 for i in f: print(i.strip()) f.close()
3. tell() :得到当前光标位置
f = open('望月怀古', 'r', encoding='utf8') print(f.tell()) f.read(7) print(f.tell()) >>> 0 >>> 7 # 如果是英文字符,则读取 7 个后,当前光标位置是 7 # 如果是中文字符,读取 7 个后,当前光标位置是 21.因为一个中文占 3 个字符
4. seek():调节当前光标位置
#hello world # f = open('望月怀古', 'r', encoding='utf8') print(f.tell()) print(f.read(7)) print(f.tell()) f.seek(0) # 调节当前光标位置到0,从当前位置开始打印 print(f.read(4)) >>> 0 >>> hello w >>> 7 >>> hell # 又从光标 0 的地方开始输出
5. flush() :把缓存里的数据保存到磁盘里区
f.flush()
6.