文件操作的认识一

# 综上, 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+ 缺点 默认无法打印出本次新写入的内容 不过也无所谓  因为你知道 自己写入的是什么~
'''

 

posted @ 2020-05-02 17:46  CherryYang  阅读(169)  评论(0编辑  收藏  举报