只读(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)