python文件操作

1、文件操作

文件操作基本步骤:

​ 1.打开文件;

​ 2.操作文件;

​ 3.关闭文件。

1.1 文件操作模式
模式描述
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
x写入文件,没有文件则创建文件,如果有则报错。
xb以二进制形式写入文件,没有文件则创建文件,如果有则报错。
x/w/a + t以utf-8的编码格式进行读写操作。
1.2 读取文件

读取文件时要注意操作文件的位置

  • 读取文本文件
file_txt = open("./示例文件/示例文本.txt", mode="r", encoding="utf8") # 以只读方式打开txt文件
data_txt = file_txt.read()
file_txt.close()
print(data_txt)
  • 读取图片等非文本文件内容
file_jpg = open("./示例文件/人物.jpg", mode="rb") # 
data_jpg = file_jpg.read()
file_jpg.close()
print(data_jpg)
1.3 写入文件
  • 写入文本文件
# 覆盖写入
file_txt = open("./示例文件/作者.txt", mode="wb")
file_txt.write("justinc".encode("utf-8")) # 将字符串使用utf-8编码写入
file_txt.close()


file_txt = open("./示例文件/作者_.txt", mode="wt")
file_txt.write("justinc_")  # 使用默认编码模式utf-8
file_txt.close()


# 追加写入
file_txt = open("./示例文件/作者.txt", mode="ab")
file_txt.write("123".encode("utf-8"))
file_txt.close()
  • 写入图片等非文本文件
f1 = open("./示例文件/人物.jpg", mode="rb")
content = f1.read()
f1.close()

f2 = open("./示例文件/人物_.jpg", mode="wb")
f2.write(content)
f2.close()
  • 读取文本并写入
f1 = open("./示例文件/作者.txt", mode="a+", encoding="utf-8")

data = f1.write("123123")
print(data)  # 返回写入字符数

content = f1.read()
print(content)  # 光标移动到最后,所以没有内容打印
f1.close()
1.4 常见功能
1.4.1 读取功能
  • read

    • 读取所有字符/字节
    file_txt = open("./示例文件/作者.txt", mode="r", encoding="utf8")
    data_txt = file_txt.read()
    file_txt.close()
    print(data_txt)
    
    • 读取n个字符/字节
    # 读取字符
    file_txt = open("./示例文件/作者.txt", mode="r", encoding="utf8")
    data_txt = file_txt.read(1)
    file_txt.close()
    print(data_txt)
    
    # 读取字节
    file_txt = open("./示例文件/作者.txt", mode="rb")
    data_txt = file_txt.read(1)
    file_txt.close()
    print(data_txt)
    
  • readline,读取第一行数据

f = open("./示例文件/示例文本.txt", mode="r", encoding="utf-8")
# 读取第一行数据如果在后面加上数字则读取前几个字符,如:f.readlines(3)代表读取前三个字符
content = f.readline()
print(content)
f.close()
  • readlines,读取所有行的数据,并将每一行作为一个元素存入列表中
f = open("./示例文件/示例文本.txt", mode="r", encoding="utf-8")
content = f.readlines()
print(content)
f.close()
  • 循环读取
# 使用readline方法读取前五行数据
f = open("./示例文件/示例文本.txt", mode="r", encoding="utf-8")
for i in range(5): # 读取前五行数据
    content = f.readline()
    print(content)
f.close()

# 循环读取,无需判断
f = open("./示例文件/示例文本.txt", mode="r", encoding="utf-8")
for line in f:
    print(line.strip())
f.close()
1.4.2 写入功能
  • flush,直接将内容刷入硬盘
file_txt = open("./示例文件/作者.txt", mode="a", encoding="utf-8")
file_txt.write("666")
file_txt.flush()  # 直接刷入硬盘
file_txt.close()
  • seek,将光标移动到指定字节

1、在a模式下,无论将光标移动到那里,总是默认在文件的尾部追加写入

2、若是中文则需要跳转的字节应该为3的倍数,否则会乱码

f = open("./示例文件/作者.txt", mode="r+", encoding="utf-8")

f.seek(7)
f.write("_")
f.close()
  • tell,获取当前光标位置
f = open("./示例文件/示例文本.txt", mode="r", encoding="utf-8")

biao1 = f.tell()
print(biao1)

f.read(3)  # 读取三个字符

biao2 = f.tell()  # 当前光标在第九个字节的位置
print(biao2)
f.close()
1.4.3 上下文管理
with open("./示例文件/作者.txt", "r") as f1,open("./示例文件/作者_.txt", "r") as f2:
    context1 = f1.read()
    context2 = f2.read()
    print(context1, context2, sep="")

相关代码地址:https://gitee.com/justinc666/basis/tree/master/文件操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值