文件操作

1、文件操作

1.1 基本模式

# 格式         f = open("相对路径/绝对路径",mode = "模式",encoding = "编码级")
​
# 模式
# w ------> write   (不存在则创建,存在则清空,光标在最后)
# r ------> read    (不存在则报错,光标在开头,参数为字符)
# a ------> append  (不存在则创建,存在则追加,强制光标在最后)
​
# 1 打开文件
f = open("practice.txt",mode="w",encoding="utf-8")
# 2 写入内容
f.write("我爱中国")
# 3 关闭文件
f.close()

  

1.2 字节流模式

# bytes(b'123')  只能识别 ascll 编码,需要编码、解码
​
# wb
# rb
# ab
​
f1 = open("practice.txt",mode="wb")
f1.write("我爱中国".encode())
f1.close()
​
f2 = open("practice.txt",mode="rb")
res = f2.read()
f2.close()
print(len(res))                                  # 计算二进制字节流的长度(12)
res1 = res.decode()                              # 把二进制字节流解码为utf-8
print(res,res1)                                  # b'xe6x88x91xe7x88xb1xe4xb8xadxe5x9bxbd' 我爱中国

  

1.2.1 脚本复制图片

# 不指定 encoding 
f = open("picture.png",mode = "rb")
res = f.read()
f.close()
f = open("picture副本.png",mode = "wb")
f.write(res)
f.close()

  

1.3 扩展模式

# r+
# r+ 先读后写
f = open("practice.txt",mode="r+",encoding="utf-8") 
# 先读
res = f.read()
print(res)
# 后写
f.write("人生苦短")
# 在读
f.seek(0) # 调整光标位置在开头
res = f.read()
print(res)
f.close()
​
# r+ 先写后读
f = open("practice.txt",mode="r+",encoding="utf-8")
f.seek(0,2) # 调整光标位置在末尾
f.write("我用python")
​
f.seek(0)
res = f.read()
print(res)
f.close()
# w+
# a+
# r+b
# w+b
# a+b

  

 

1.4 with 语法(不需要close)

# 格式一
with open("相对路径/绝对路径",mode = "模式",encoding = "编码级") as f :
    pass
​
# 格式二
with open("相对路径/绝对路径",mode = "模式",encoding = "编码级") as f1 ,open("相对路径/绝对路径",mode = "模式",encoding = "编码级") as f2 :
    pass

  

1.5 flush 刷新缓冲区

# write 只写到内存
"""
1、文件关闭时,自动刷新缓冲区
2、程序运行结束时,自动刷新缓冲区
3,缓冲区内存写满时,自动刷新缓冲区
"""
# 4、手动刷新刷冲区,f.flush
f = open("practice.txt",mode="w",encoding="utf-8")
while True:
    data = input("请输入内容:")
    f1.write(data)
    f1.flush()
f1.close()

  

1.6 文件方法

f.seek(0)                  # 调整光标位置到开头(字节)
f.seek(0,2)                # 调整光标位置到最后
f.tell()                   # 光标位置向左到开头的字节数
f.readable()               # 判断文件是否可读
f.writable()               # 判断文件是否可写
f.readline()               # 读一行
f.readlines()              # 读所有行,原型存入列表
f.writelines()             # 写入内容是字符串的可迭代的数据
f.truncate()               # 截取字节,清空文件,再写入截取内容

  

 

原文地址:https://www.cnblogs.com/zhoulangshunxinyangfan/p/13308539.html