只读(r, rb) 只写(w, wb) 追加(a, ab) r+读写 w+写读 a+写读(追加写读)
1.读取操作
try:
f = open(r"C:\Users\20346\Desktop\1.txt", "r", encoding="UTF-8")
content = f.read()
print(content)
except BaseException as e:
print(e)
finally:
f.close()
结果为:
C:\Users\20346\AppData\Local\Programs\Python\Python37\python.exe D:/python/3.py
大家都不的目的地
加上b 就是以二进制的方式读取,一般用于图片,MP3,视频
try:
f = open(r"C:\Users\20346\Desktop\1.txt", "rb")
content = f.read()
print(content)
except BaseException as e:
print(e)
finally:
f.close()
结果为:
b'\xe5\xa4\xa7\xe5\xae\xb6\xe9\x83\xbd\xe4\xb8\x8d\xe7\x9a\x84\xe7\x9b\xae\xe7\x9a\x84\xe5\x9c\xb0 '
还有其他方法
1. read() 将文件中的内容全部读取出来. 弊端: 占内存. 如果文件过大.容易导致内存崩溃
2. read(n) 读取n个字符. 需要注意的是. 如果再次读取. 那么会在当前位置继续去读而不 是从头读, 如果使用的是rb模式. 则读取出来的是n个字节
3. readline() 一次读取一行数据, 注意: readline()结尾, 注意每次读取出来的数据都会有一 个\n 所以呢. 需要我们使用strip()方法来去掉\n或者空格
4. readlines()将每一行形成一个元素, 放到一个列表中. 将所有的内容都读取出来. 所以 也是. 容易出现内存崩溃的问题.不推荐使用
1.txt 内容
+++++1.txt+++++
第一行的内容
第二行的内容
第三行的内容
第四行的内容
第五行的内容
第六行的内容
第七行的内容
+++++1.txt++++++
代码部分
try:
f = open(r"C:\Users\20346\Desktop\1.txt", "r+", encoding="UTF-8")
content = f.read()
f.seek(0) # 光标移动到开头
content1 = f.read(3)
f.seek(0) # 光标移动到开头
content2 = f.readline()
f.seek(0) # 光标移动到开头
content3 = f.readlines()
print("一次读取全部\n"+content+"\n")
print("一次读取三个字符,根据read(n) ,其中的n \n " + content1+"\n")
print("一次读取一行 \n" + content2+"\n")
print("全部读取,但是放入一个列表里\n" )
for i in content3:
print(i)
except BaseException as e:
print(e)
finally:
f.close()
结果为:
一次读取全部
+++++1.txt+++++
第一行的内容
第二行的内容
第三行的内容
第四行的内容
第五行的内容
第六行的内容
第七行的内容
+++++1.txt++++++
一次读取三个字符,根据read(n) ,其中的n
+++
一次读取一行
+++++1.txt+++++
全部读取,但是放入一个列表里
+++++1.txt+++++
第一行的内容
第二行的内容
第三行的内容
第四行的内容
第五行的内容
第六行的内容
第七行的内容
+++++1.txt++++++
2.写的操作
w
写的时候注意. 如果没有文件. 则会创建文件, 如果文件存在. 则将原件中原来的内容删除, 再 写入新内容
try:
f = open(r"C:\Users\20346\Desktop\1.txt", "w", encoding="UTF-8")
f.write("金毛狮王")
f.flush() # 刷新. 养成好习惯
except BaseException as e:
print(e)
finally:
f.close()
3.读写操作
对于读写模式. 必须是先读. 因为默认光标是在开头的. 准备读取的. 当读完了之后再进行 写入. 我们以后使用频率最⾼的模式就是r+
try:
f = open(r"C:\Users\20346\Desktop\1.txt", "r+", encoding="UTF-8")
content = f.read()
print(content)
f.write("麻花藤的最爱")
f.flush()
f.seek(0)
content = f.read()
print(content)
except BaseException as e:
print(e)
finally:
f.close()
结果为:
金毛狮王1
金毛狮王1麻花藤的最爱
4.写读操作
w+
先将所有的内容清空. 然后写入. 最后读取. 但是读取的内容是空的, 不常用
f = open(r"C:\Users\20346\Desktop\1.txt", "w+", encoding="UTF-8")
f.write("哈哈")
content = f.read()
print(content)
f.flush()
f.close()
5.追加操作
a+模式下, 不论先读还是后读. 都是读取不到数据的.
try:
f = open(r"C:\Users\20346\Desktop\1.txt", "a+", encoding="UTF-8")
f.write("马化腾")
content = f.read()
print("指针在尾部,所以答应出来的东西为空"+content+"\n")
f.flush()
f.seek(0)
content = f.read()
print("指针在第一位,所以有东西打印 "+content)
except BaseException as e:
print(e)
finally:
f.close()
结果为:
C:\Users\20346\AppData\Local\Programs\Python\Python37\python.exe D:/python/3.py
指针在尾部,所以答应出来的东西为空
指针在第一位,所以有东西打印 金毛狮王1麻花藤的最爱马化腾马化腾
6.with 上下文管理器
s = ["大家好\n", "我是joker\n", "我今年18岁\n"]
with open(r"C:\Users\20346\Desktop\1.txt", "r+", encoding="UTF-8") as f:
f.writelines(s)