一.文件操作
1.文件操作介绍
在实际操作中,通常需要将数据写入到本地文件或者从本地文件中读取数据等操作,那么作为python爱好者的我们,必须要用python语言去对本地文件进行操作。比如:
2.本地文件操作步骤
(1)找到文件所在的位置
(2)打开文件
(3)操作文件
(4)关闭文件
二.open()函数
1.open()函数语法
open(file, mode='r',encoding=None) --> 打开文件
- file --> 文件路径
- mode --> 操作文件模式
- r --> 只读模式
- w --> 写入
- a --> 追加
- encoding --> 指定文件编码
- utf-8 --> 当文件中文乱码时,则指定编码为utf-8解决。
2.只读模式 r
- f.readable() --> 判断是否可读,返回值为布尔
- f.read(n) --> 读取全部,在python3中n为字符
- f.readline() --> 逐行读取,包括\n
- f.readlines() --> 读取所有,返回值为列表,包括\n
- f.tell() --> 文件指针所处文件位置
练习:新建Students.txt;通过f.readlines() 读取文件全部内容;去掉\n
换行符。
f = open("Students.txt",'r')
res = f.readlines()
for i in range(len(res)):
res[i] = res[i].rstrip("\n")
print(res)
f.close()
注意:
- r模式,当文件不存在时则报错
- f.read() --> 读取全部
- f.readline() -->逐行读取
- f.readlines() -->读取全部,且为列表
- 读取不可逆
3.只写模式 w
- f.writable() --> 判断是否可写
- f.write(str) --> 写入内容,返回值为写入字符串的长度
- f.writelines(seq) --> 写入多行,但需要自己添加换行符
注意:
- w模式,当文件不存在时创建文件
- 再次写入为覆盖
练习:创建text02.txt文件,并且写入内容
f = open('test02.txt','w')
# f.write("Hello World")
f.write("Logic Education") # 覆盖
f.close()
4.追加模式 a
注意
- a模式,当文件不存在时创建文件
- 再次写入为追加
5.python操作二进制
rb模式:以字节(二进制)方式读取文件中的数据
wb模式: 以字节(二进制)方式往文件中写入数据
ab模式: 以字节(二进制)方式往文件末尾追加写入数据
b = b'hello world'
f = open('test5.txt','wb')
f.write(b)
6.python操作json文件
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
json格式:'{"key":"value"}'
练习
将{"age":18}写入data.json文件中
import json
data = {"age":18} # python对象 字典
f = open('data.json','w')
json.dump(data, f) # 将python对象转为json对象 写入f文件
f.close()
#以语句写入
j = json.dumps(data)
f.write(j)
f.close()
练习
读取data.json文件中的数据
import json
f = open('data.json','r')
j_data = json.load(f) # 将json对象转为python对象(字典)
7.f.close()
要注意的是,当文件打开之后,必须通过f.close()语句来关闭文件,释放资源。
try:
f = open('test2.txt','r')
f.read()
finally:
if f:
f.close()
三.with open()
with open() --> 上下文管理器
with关键字用于Python的上下文管理器机制。为了防止诸如open这一类文件打开方法在操作过程出现异常或错误,或者最后忘了执行close方法,文件非正常关闭等可能导致文件泄露、破坏的问题 。Python提供了with这个上下文管理器机制,保证文件会被正常关闭。在它的管理下,不需要再写close语句。其余操作都同open()一致。
with open('Students.txt','r') as f:
print(f.readlines())