Python 文件操作

文件操作

open() # 打开
file # 文件的位置(路径)
mode # 操作文件的模式
encoding()  # 文件编码方式
f # 文件句柄

# 操作文件:
	# 1.打开文件
	# 2.操作文件
	# 3.关闭文件
# 文件操作的方式
# r,w,a(重要)
# rb,wb,rb(次要)
# r+,w+,a+(不怎么重要)

f = open("文件的路径(文件放的位置)",mode="操作文件的模式",encoding="文件的编码")
f(文件句柄)

r w a 重要

f = open("log",mode="r",encoding="utf-8")
print(f.read())
# f.readline() 读取一行
# f.readlines() 一行一行读取存放在列表
f.close()  # 关闭文件

f = open("log",mode="w",encoding="utf-8")
f.write("test")  # 覆盖写,如果没有文件会新创建一个文件,只能写字符串
f.close() 

f = open("log",mode="a",encoding="utf-8")
f.read()  # 追加写,在文本的末尾写入
f.close()

rb wb ab 次要

# rb 读字节
f1 = open("1.png","rb") # 不能使用encoding
print(f1.read())  #  全部读取
print(f1.read(3)) # 按照字节读取
f1.close()

# wb
f = open("3.jpg","wb")
f.write(f1.read())  #  覆盖写
f.close()

# ab
f = open("2.jpg","ab")
f.write("你好啊".encode("utf-8"))
f1 = open("2.jpg","rb")
print(f1.read().decode("utf-8"))
f.close()
f1.close()

r+ w+ a+ 一般

# r+ 读写 先读后写
# 错误的操作(坑)
f = open("log","r+",encoding="utf-8")
f.write("test") # 先写后读会写到文件最前面,必须先读后写
print(f.read())
f.close()

# 正确的操作:
f = open("log","r+",encoding="utf-8")
print(f.read())
f.write("test12345")
f.close()

# w+ 清空写 读
f = open("log","w+",encoding="utf-8")
f.write("test")
print(f.tell())
f.seek(15)
print(f.tell())
print(f.read())
f.close()

# a+ 追加写,读
f = open("log","a+",encoding="utf-8")
f.write("test23")
print(f.tell()) # 字节数
print(f.seek(0,0)) # 0将光标移动到文件头部
print(f.read())
f.close()

其它操作

# tell 查看光标  -- 返回的是字节数
# seek 移动光标
	# 1.seek(0,0) -- 移动到文件的头部
	# 2.seek(0,1) -- 当前位置
	# 3.seek(0,2) -- 移动到文件的末尾
	# 4.seek(3) -- 按照字节进行移动(按照编码集,自己进行计算)
 
f = open("log","r",encoding="gbk")
print(f.read(3))  # 字符

f = open("log","rb")
print(f.read(3))  # 字节

# 错误操作
f = open("log","r",encoding="gbk")
f.seek(-1)
print(f.read())

# 文件修改
f = open("log","r",encoding="gbk")
s = f.read()
s1 = s.replace("test","txt")
f1 = open("log","w",encoding="gbk")
f1.write(s1)
f.close()
f1.close()

with 关键字 open("log","r",encoding="gbk") as f:
    文件操作的具体内容

with open('log','r',encoding='gbk') as f, 
        open('log.txt','w',encoding="gbk") as f1:
     for i in f:
        s1 = i.replace("test",'txt')
        f1.write(s1)
import os
os.rename('log','log.bak')
os.rename('log.txt','log')

with open("log",'r',encoding="gbk") as f: # 自动关闭 f.close()
    pass # 缩进里操作文件
print(f.read())  # 文件已经关闭

with open 的好处
 1.可以同时打开多个文件
 2.能够自动关闭文件


原文地址:https://www.cnblogs.com/alex3174/p/11189662.html