day_12_文件操作
1 . 数据持久化:将数据保存到文件中,然后将文件保存在硬盘中
程序中产生的数据默认保存在内存中,程序结束数据会自动销毁。如果希望程序结果不销毁,呢么需要对这个数据做数据持久化。
2. 文件操作(对文件内容进行操作)
基本步骤:打开文件 --> 操作文件(读/写)--> 关闭文件
2-1 打开文件
open(file, mode='r', encoding=None) #以指定的方式打开文件,并返回文件对象
# 说明
# file -> 文件路径(可以写绝对路径,可以写相对路径)
# 绝对路径 -> E:\python_learn\learn\千峰培训1902\day_12_文件操作\test.txt
# 相对路径 -> (需要将文件保存在工程目录下)(.\test.txt)
# ./ -> 代表当前目录
# ../ -> 代表当前目录的上层目录
# .../ -> 代表当前目录的上层目录的上层目录
# mode - 字符串,文件的打开方式(决定打开文件后能够进行的操作,和操作方式)
# 'r' - 以只读的方式打开文件,读出来的数据是字符串
# 'w' - 以只写的方式打开文件,写入的数据是字符串(覆盖源文件的内容)
# 'rb'/'br' - 以制度的方式打开文件,读出来的数据是二进制
# 'wb'/'bw' - 以只写的方法打开文件,写入的数据是二进制数据
# 'a' - 以只写的方式打开文件,写入的数据是字符串(在源文件的最后添加内容)
# encoding - 字符,文本编码方式
# 'utf-8'(mac) - 支持中文
# 'gbk'(windows) - 只支持英文
# 注意:只有文本文件才能设置encoding,二进制操作不能设置encoding
2-2 操作文件
f = open(file, mode='r', encoding=None)
# f 保存文件对象,只有打开文件才能得到文件对象
# 1.读操作:文件对象.read() - 返回文件中的内容
# 文件对象.readline() - 读一行内容(从读写位置开始到一行结尾)
# 读不到内容返回空字符串
content = f.read()
# 设置读写位置在文件开头
f.seek(0)
# 读一行
f.readline()
# 2.写操作:文件对象.write(内容)
# 文件对象.write(内容) - 将内容写入指定文件
2-3字节类型(bytes)
2-3-1 数据来源:
a. 将其它类型转换成bytes类型:整型,字符串
# 字符串转二进制
# ''.encode()
# 二进制转字符串
# str('你好'.encode(),encoding = 'utf-8')
# '你好'.encode().decode()
b. 以'rb'/'br'的方式读文件
2-4 二进制文件读写
图片、视频、音频等都是二进制文件。这些文件只能以带’b'的方式打开然后操作
2-5 关闭文件
f.close()
3-1 打开文件语法(实用)
with open() as 文件对象:
文件的操作
3-2 数据持久化
3-2-1 要为这个数据创建对应的本地文件
3-2-2 程序中需要这个数据的值的时候从文件中读文件的值
3-2-3 这个数据的值发生改变后要将最新的数据更新到本地文件中
3.什么是json数据(import json)
满足json格式要求的数据就是json数据;文件内容满足json格式要求,就是json文件
1.json格式要求
a. 一个json有且只有一个数据,b.这个必须是json支持的数据类型对应的数据
2.json支持的数据类型
数字类型(number) - 包含所有的数字(整数和小数)
字符串(string)- 使用双引号引起来的字符集,支持转义字符,例如:”abc“,”123\nabc"
布尔(boolean) - 只有true,false
数组(array) - 相当于python中的列表,[12,"avc",true,[1,3]]
字典(dictionary) - 相当于python中的字典,键只能是字符串,值任意
null - 相当于 None,空置
2.python数据和json数据的相互转换
python 中内置了一个json模块,用来支持json相关操作
2-1 json转python
数字 int/float
字符串 str,有可能将双引号变成单引号
布尔 bool,true ->True, flase -> Flase
数组 list
字典 dict
null None
json.loads('字符串',encoding = 'utf-8') -> 将字符串转成python对应的数据
注意:这儿的字符串要求字符串中的内容必须是json格式的数据(去掉字符串最外面的引号,本身就是一个json数据)
2 - 2 python 转 json
int/float 数字
bool 布尔 ,True -> true, Flase ->flase
str 字符串
list/typle 数组
dict 字典
None null
json.dumps(数据) --> 将数据对象转换成json格式的字符串