1.数据本地化和数据持久化 - 通过文件将数据储存到硬盘中
数据库文件:txt、json、plist、xml、png文件、mp4、mp3等
2.文件操作 - 文件内容操作
基本步骤:打开文件 --> 操作文件(读/写) --> 关闭文件
1) 打开文件
open(file, mode,encoding = None) - 已指定的方式打开指定文件,并且返回被打开的文件对象
file -- 字符串:需要打开的文件路径
./ -- 当前文件所在目录
../ -- 当前文件所在目录的上层目录
mode -- 字符串: 打开方式
r -- 默认值,以读的方式打开文件(不能修改内容),读出来的内容是文本
w -- 以写的方式打开文件,覆盖源文件
a -- 以写的方式打开文件,追加源文件
rb/br -- 以读的方式打开,读出来的内容是二进制
wb/bw -- 以写的方式打开,将二进制数据写入文件中
+ -- 以读写的方式打开文件(了解)
encoding -- 文本编码方式
utf-8
注意:文本编码只针对文本文件、二进制文件不能设置编码方式
2.文件操作
文件对象.read() -- 获取文件中的内容,并返回
(读写位置默认在文件开头)
文件对象.seek(字节数) -- 将读写位置移动到指定的地方(了解)
def main():
# 1.文件读操作
f = open('test.txt','r',encoding= 'utf-8')
print(f)
result = f.read()
print(result)
# 2.文件写操作
"""
文件对象.write(内容) -- 将指定内容写到文件里,并覆盖源文件内容
"""
f = open('test.txt','w',encoding= 'utf-8')
wrt = f.write('李白想婆娘')
print(wrt)
# 关闭文件
"""
文件对象.close()
"""
f.close()
# ======
"""
注意:打开文件的时候,如果以读的方式打开一个不存在的文件,会出现异常报错
如果以写的方式打开一个不存在的文件,不会出现异常并且会创建一个新的对应的文件并打开操作
"""
if __name__ == '__main__':
main()
二进制文件操作
rb - 读的时候获取到的是二进制数据(bytes)
wb - 写的时候写入的内容要求类型是二进制文件
普通的文本文件可以通过二进制的形式去打开,影响只是获取到的内容,和写的内容的数据类型;
二进制文件只能以二进制的形式打开(例如:图片,音频)
二进制数据
一般二进制数据都是通过网络请求获取到,或者通过读取本地的二进制文件获取
1)将字符串转换二进制
bytes(str,encoding = 'utf-8')
字符串.encode(编码方式) - str.encode(encoding = 'utf-8')
2) 将二进制转换成字符串
str(二进制数据,encoding = 'utf-8')
二进制数据.decode(编码方式)
文件上下文
with open(文件路径,打开方式,编码方式) as 文件对象:
操作文件
文件操作完成后,会自动关闭
def main():
with open('./files/test.txt', 'r', encoding='utf-8') as f1:
print(f1.read())
# 1. 普通文本文件以二进制的形式打开
f = open('./files/test.txt', 'rb')
reslut = f.read()
print(reslut, type(reslut))
f = open('./files/test.txt', 'wb')
f.write(bytes('bbb', encoding='utf-8'))
# 2. 二进制文件
f1 = open('./files/luffy4.jpg', 'rb')
reslut = f1.read()
print(reslut, type(reslut))
f2 = open('./files/aaa.jpg', 'wb')
f2.write(reslut)
if __name__ == '__main__':
main()
1.json数据
满足json格式的数据就叫json数据
json格式: 一个json有且只有一个数据,这个数据必须是json支持的数据类型
json支持的数据类型:
1、数字(number) - 包含所有的数字(整数和小数),并且支持科学计数法。
2、字符串(string) - 通过双引号包含的字符集 :"abcd","1234","你好" 字符也可以是转义字符
3、布尔(boolean) - true/false
4、数组(array) - 相当于python中的列表,[100,"abc",true,[1,2,3]]
5、字典(dictionary) - 相当于python中的字典,{"a":10,"b":100,"c":true}
6、空值 - null, 相当于 None
2.使用json
1) 解析json数据(获取到json数据后将json中想要的东西解析出来) -- 做前端开发人的工作
2) 构造json数据
# =====================1.json转python(json数据解析)============
在python中有一个内置库,专门负责json数据的处理: json库
a. 将json数据转换成python数据
json数据 python数据
number int/float
string str,可能会出现将双引号变成单引号
bool bool,true -> True false -> False
array list
dictionary dict
空 null -> None
json.loads(字符串,encoding = 'utf-8') - 解析json数据
字符串要求: 字符串中内容本身就是一个json数据(去掉引号后,本身就是一个json数据)
result = json.loads('"abc"',encoding='utf-8')
print(result,type(result)) # abc
result = json.loads('100',encoding='utf-8')
print(result,type(result)) # 100
result = json.loads('true',encoding='utf-8')
print(result,type(result)) # True
result = json.loads('[10,23,"nsq",true]',encoding='utf-8')
print(result,type(result)) # [10, 23, 'nsq', True]
result = json.loads('{"a": 100,"b": false}',encoding='utf-8')
print(result,type(result)) # {'a': 100, 'b': False}
with open('jsontest.json','r',encoding='utf-8')as f:
result = f.read()
result_py = json.loads(result,encoding='utf-8')
result1 = result_py['data']
max_dict = max(result1, key=lambda x: int(x['favourite']))
print(max_dict['name'],max_dict['text'],max_dict['favourite'])
# ======================2.将python 转换为json 数据======================
"""
python数据 json数据
int/float number
bool True => true , False => false
str string '' => ""
list,tuple array
dict dictionary
空值 None => null
json.dumps(python数据) ==》 将python数据转换为对应的json数据 其结果是字符串类型
"""
result = json.dumps('abc')
print(result,type(result))
# ===================3.json 文件操作=====================
"""
json.load(文件对象) - 将文件对象中的文件内容转换为python数据
要求文件内容是json数据
json.dump(python数据,文件对象) - 将python数据转换成json数据,结果(字符串)再写入指定文件中
"""
with open('test.txt','r',encoding='utf-8')as f:
result = json.load(f)
print(type(result),result)