文件操作的认识一
# 综上, r w a a+ w+ r+ 比较有效果的是 w 和 r+
# w 适合创建文件 从无到有
# r+ 适合对已有文件进行操作 其先读后写 可以使文件写入的新内容不会错误覆盖掉的内容 且可以在写之前读取到原本的内容
# r+ 缺点 默认无法打印出本次新写入的内容 不过也无所谓 因为你知道 自己写入的是什么~
f = open("练习.txt") # 相对路径指定了文件,默认对文件的操作模式是只读 mode="r" 默认编码方式是utf-8 print("文件是否可读", f.readable()) # 当文件不存在时 报错 No such file or directory f.close() f = open("练习.txt", mode="w", encoding="utf-8") # 将对文件进行'只写'操作 ,文件从磁盘读入内存,二进制文件进行utf-8编码 b1 = f.readable() b2 = f.writable() # 文件是可写的 print("文件是否可读", b1) print("文件是否可写", b2) f.close() f = open("练习.txt", mode="w", encoding="utf-8") # f.read() # 打开文件时 指定了对文件操作的模式 是 只写,则此处就不能'读' 报错 io.UnsupportedOperation: not readable f.close() f = open("练习.txt", mode="w", encoding="utf-8") f.write("中华人民共和国") # write()方法 文件指针前移清除内容 直至指针到达起始首位开始写本次内容 方法参数str 方法底层自动将str-->bytes,且默认encode="utf-8" f.close() f = open("练习.txt", mode="r", encoding="utf-8") all = f.read() # read()方法 是一次性将文件全部读取出* 方法底层自动完成了bytes-->str print("打印:", all) # read()方法 只适合文件内容较少的情况(例如 不适合读取 一份4G文件大小的日志文件) f.close() f = open("练习.txt", mode="a", encoding="utf-8") num = f.write("China") # write()方法的返回值 本次写入几个字符 # print(f.read()) # 对文件'追加'模式下 只能单一的'写' 不能又写又读 两项操作 因此报错 UnsupportedOperation: not readable f.close() print("=====================================") # w w+ a a+ 和'写'相关的模式操作,初始均默认文件指针在末尾 # 如果a a+ 模式下 文件指针起始位置在当前文件末尾处 执行write()方法 则开始向后移 f = open("练习.txt", mode="a+", encoding="utf-8") # 文件操作模式 支持 尾部追加写 和 读 print("打印:", f.read()) num = f.write("伟大") # 追加写 执行完成后 文件指针在文件末尾 print("打印:", f.read()) # 从文件指针处开始读取 后续读出的内容为空 实际文件内容为 "中华人民共和国China伟大 " f.close() # 如果w w+ 模式下 文件指针起始位置在当前文件末尾处 执行write()方法 则文件指针先向移到 清空前面的内容 最终停留在起始首位 f = open("练习.txt", mode="w+", encoding="utf-8") print("打印:", f.read()) # 文件指针在尾部 后续内容为空 f.write("人民的总理-") # 文件指针向前移动到头部 再开始写入 print("打印:", f.read()) # 上面write()执行完毕后 文件指针在末尾 因此还是读取为空 f.close() # r r+ 和'读'相关的模式操作 初始均默认文件指针在头部 f = open("练习.txt", mode="r+", encoding="utf-8") print("打印:", f.read()) # 文件指针从头部开始读取 读取完成后 指针停留在当前位置 print(f.tell()) # 打印出停留在当前位置 以bytes为单位描述位置(一个汉字3byte 一个英文字符1byte) f.write("***") print("打印:", f.read()) # 文件指针在尾部 后续内容为空 print("=====================================") ''' # 综上, r w a a+ w+ r+ 比较有效果的是 w 和 r+ # w 适合创建文件 从无到有 # r+ 适合对已有文件进行操作 其先读后写 可以使文件写入的新内容不会错误覆盖掉的内容 且可以在写之前读取到原本的内容 # r+ 缺点 默认无法打印出本次新写入的内容 不过也无所谓 因为你知道 自己写入的是什么~ '''