python D8 文件操作


# r 、w 、 a / rb 、wb、ab/r+ w+ a+
# x = open("boom.txt", mode="w", encoding="utf-8")
# y = x.write("你是大sb")
# x = open("boom.txt", mode="r", encoding="utf-8")
# print(x.read())
# x = open("boom.txt", mode="a", encoding="utf-8")
# y = x.write("你是小sha")
# print(y)
# rb:表示只读字节,将文字信息已字节的形式展示出来
# x = open("boom.txt", mode="rb") b其实表示的是bytes
# print(x.read()) # b'\xe4\xbd\xa0\xe6\x98\xaf\xe5\xa4\xa7sb\xe4\xbd\xa0\xe6\x98\xaf\xe5\xb0\x8fsha'
# x = open("../python D6 字典/作业.py", mode="r", encoding="utf-8")
# print(x.read()) # ../ 表示上层目录 /直接打开文件所在目录
# x = open("boom sha ka la ka", mode="w", encoding="utf-8")
# print(x.write("周杰车轮"))
# print(x.write("haoshabi"))
# r+ 深坑请注意: 在r+模式下. 如果读取了内容. 不论读取内容多少. 光标显⽰的是多少. 再写入或者操作⽂件的时候都是在结尾进⾏的操作.
# x = open("boom sha ka la ka", mode="r+", encoding="utf-8")
# x.read(3)
# x.write("张国荣吗") # 先读后写、读完光标定位在最后一位在开始写
# w+
# x = open("boom sha ka la ka", mode="w+", encoding="utf-8")
# x.write("大sb不是吗")
# print(x.read()) # 读到内容为空w模式下会先清空原来文本,在写入光标定位在最后一位,因此打出内容为空
# x = open("boom sha ka la ka", mode="a+", encoding="utf-8")
# x.write("大sb不是吗")
# print(x.read()) # 追加在末尾 不管先读还是后读都读不出任何内容
# x = open("boom sha ka la ka", mode="a+", encoding="utf-8")
# print(x.read())
# x.write("大sb不是吗")

# seek(n):表示光标移动到n的位置 注意, 移动的单位是byte. 所以如果是UTF-8的中⽂部分要是3的倍数.
# seek(参数1, 参数2)
# 参数1表示的是偏移量,移动多少个单位
# 参数2表示从什么位置进行偏移
# seek(0):表示开头位置
# seek(0, 2):表示结尾位置
# f = open("boom.txt", mode="r", encoding="utf-8")
# f.seek(5, 0)
# y = f.read()
# print(y)

# tell():可以帮我们获取我们光标当前的位置 所指出的位置是以字节(byte)计算的
# f = open("boom.txt", mode="r+", encoding="utf-8")
# f.read() # 读写模式 读完光标停在最后
# f.seek(0) # 光标移动到开头
# f.write("张国荣") # 开头写入张国荣共计9个字节
# print(f.tell()) # 9

# truncate() 截断⽂件 :删除光标后面所有文件
# f = open("boom.txt", mode="r+", encoding="utf-8") # 张国荣大傻子Ma
# f.seek(9, 0)
# f.truncate() # 文件只剩下:张国荣
# 所以如果想做截断操作. 记住了. 要先挪动光标. 挪动到你想要截断的位置. 然后再进⾏截断
# 关于truncate(n), 如果给出了n. 则从开头开头进⾏截断, 如果不给n, 则从当前位置截断. 后⾯
# 的内容将会被删除

# 修改文件以及另一种方式打开文件
# 修改文件:其实是用一个新文件去替换原文件
# 方法一:
# 缺点需要将文件全部读出在重新写入新文件中,内存溢出 解决⽅案: ⼀⾏⼀⾏的读取和操作
# import os
#
# with open("boom sha ka la ka", mode="r", encoding="utf-8") as x1,\
# open("boom_new", mode="w", encoding="utf-8") as x2:
# content = x1.read() # 一次读出内容导致内存溢出
# content_new = content.replace("sb", "傻子")
# x2.write(content_new ) # 到这一步是生成一个文件,并将想要替换的内容替换好写入文件x2中
# os.remove("boom sha ka la ka") # 引用函数os 删除"boom sha ka la ka"原文件夹
# os.rename("boom_new", "boom sha ka la ka") # 引用函数os 将"boom_new"名称改为"boom sha ka la ka"
# 方法二:
# 一行一行读出,省内存
# import os
#
# with open("boom sha ka la ka", mode="r", encoding="utf-8") as x1,\
# open("boom_new", mode="w", encoding="utf-8") as x2:
# for line in x1: # 文件也是可以迭代的 一行行拿出来替换写入新文件中,节省内存
# content_new = line.replace("sb", "沙比")
# x2.write(content_new)
# os.remove("boom sha ka la ka") # 引用函数os 删除"boom sha ka la ka"原文件夹
# os.rename("boom_new", "boom sha ka la ka") # 引用函数os 将"boom_new"名称改为"boom sha ka la ka"

猜你喜欢

转载自www.cnblogs.com/z520h123/p/9857429.html