一. 知识点
二. 代码练习
"""
功能详解
"""
f = open('大圣', mode='r+', encoding='utf-8')
content = f.read(3) # 可指定读多少个字符,读出来的都是字符
print(content) # 原文PYTHON、打印结果:PYT
f.close()
f = open('大圣', mode='r+', encoding='utf-8')
f.seek(3)
content = f.read()
print(content) # 打印结果:HON
f.close()
f = open('大圣', mode='r+', encoding='utf-8')
f.seek(3)
content = f.read()
print(content) # 原文:遇见未知的自己、打印结果:见未知的自己
f.close()
"""
- 光标操作 seek() 是按照字节去确定光标的位置
- 因为 UTF-8 1个中文用3个字节去表示,所以f.seek(3)仅移动了一个中文
- 中文如果使用 f.seek(2) 会报错
"""
f = open('大圣', mode='r+', encoding='utf-8')
f.seek(3)
print(f.tell()) # f.tell() ——> 返回光标的位置
f.close()
f = open('大圣', mode='a+', encoding='utf-8')
f.write('GG') # 更新为 PYTHONGG
count = f.tell() # 找到光标位置赋值给count
f.seek(count-3) # 重新定位光标到向前三个字符
print(f.read()) # 原文PYTHON、打印结果:NGG
f.close()
"""
断点续传的应用
- 先知道断在哪儿:f.tell() ——> 读光标
- 之后将光标移到断点处:count = f.tell() f.seek(count-3) ——> 重新定位光标
"""
f = open('大圣', mode='r+', encoding='utf-8')
line1 = f.readline() # 按行读,读第一行
print(line1)
f.close()
f = open('大圣', mode='r+', encoding='utf-8')
line2 = f.readlines() # 一行一行的读,每一行作为列表的一个元素,添加到list中
print(line2) # 打印结果:['PYTHON,JavaScript\n', 'JAVA\n', 'WEB']
f.close()
f = open('大圣', mode='r+', encoding='utf-8')
f.truncate(3) # 对原文件以字符为单位进行截取,原文:PYTHON、f.truncate(2)之后,原文更新为PY
f.close()
f = open('大圣', mode='r+', encoding='utf-8')
for line in f: # 打开一个文件,对句柄进行循环
print(line)
f.close()
"""
- 注意:该方式应该有节制的使用,一般使用一行一行的读,或者指定读多少,不然文件过大会爆炸
"""
with open('大圣', mode='r+', encoding='utf-8') as f:
print(f.read())
"""
- 该读取方式自动关闭,不用close()
- 注意该方式有缩进
- 该方式可同时打开多个文件(见下)
- with open('大圣', mode='r+', encoding='utf-8') as f,open('大圣', mode='r+', encoding='utf-8') as obj:
"""