1.数据的本地化和数据持久化
通过文件将数据保存到硬盘中,通常有:
数据库文件,txt、json、plist、xml、png文件mp3/mp4
2.文件操作 - 文件内容操作
基本步骤:打开文件 --> 操作文件 --> 关闭文件
- 1)打开文件
open(file, mode, encoding=None)- 以指定方式打开文件,并返回文件句柄
file -- 字符串。需要打开的文件路径
./ -- 当前文件所在目录(./可以省略)
../ -- 当前文件的上层目录
mode -- 字符串 ,打开方式
r -- 默认值,以只读的方式打开文件
w-- 以只写的方式打开文件
a -- 以追加写的方式打开文件
rb/br -- 以只读的方式打开文件(读取到的数据为2进制)
wb/bw -- 以写的方式打开文件(jiang2进制数据写入文件 )
'+ -- 可以读写 - 2)文件读操作
文件对象.read() -- 从读写位置开始,读到文件结束,并返回字符串(读写位置默认在文件开头)
文件对象.seek(字节数) -- 将读写位置移动到指定的地方
f = open('./files/test.txt', 'r, encoding='utf-8')
result = f.read
print(result)
f.seek(0) #将读写位置移动到句柄开头
f.close()
- 3)readlines:一行一行读取所有数据,并保存为列表
f = open('./files/test.txt', 'r, encoding='utf-8')
print(f.readlines())
f.close()
- 4)文件写操作
文件对象.write(写的内容) -将指定的内容写入指定文件中返回被写入内容的长度
f = open('./files/test.txt', 'w', encoding='utf-8')
result = f.write('abc')
print(result)
# 关闭文件
f.close()
注意,如果以读的方式打开一个不存在的文件,会报错,而以写的方式打开一个不存在的文件则会在对应位置创建该文件
3. 二进制文件操作
rb 读的时候获取到的是二进制的数据(byte)
wb 写的时候写入的内容 要求是二进制文本内容
普通文本文件可以通过二进制的形式去打开,影响的只是获取到的内容,和写进去的数据类型
二进制文件只能以二进制形式打开(例如:图片,视频,音频)
二级制打开文件时,不能指定encoding参数
4. 二进制数据
一般二进制数据都是通过网络请求获取,或者通过读取本地二进制文件得到
- 1)将字符串转换为二进制
bytes(字符串,编码方式)
字符串.encode(编码方式)
2)将二进制转换成字符串
二进制数据decode(编码方式)
5.文件上下文
with open(文件路径,打开方式,编码方式) as 文件对象
操作文件
文件操作完成后自动关闭
with open('./files/sss.txt', 'r', encoding='utf-8') as f1:
print(f1.read)
#普通文件以二进制打开
f = open('./sdf.txt', 'rb'')
result = f.read()
print(result,type(result))
f = open('./dfs.txt', 'wb')
f.write(bytes('ssd', encoding=utf-8)
#二进制文件的打开
f1 = open('./files/luffy4.jpg', 'rb')
reslut = f1.read()
print(reslut, type(reslut))
f2 = open('./files/aaa.jpg', 'wb')
f2.write(reslut)
6.json数据
1)满足json格式的数据就是json数据
json格式: 一个json有且只有一个数据,这个数据必须满足json支持的数据类型
json支持的数据类型:
- 数字(number) - 包含所有的数字(整数和小数), 支持科学计数法 如100 23.4, 3e3
- 字符串(string) - 用双引号括起来的字符集可以是转译字符和编码字符
例如: "abc", "你好", "12334","abc\n123", "\u4e01abc" - 布尔(bool) - true/false
- 数组(array)- 相当于python中的列表
- dictionary - 相当于python中的字典{"a": 123}
-null - 相当于None
7.使用json
1)解析json数据(获取到json数据后将json中想要的数据解析出来) -- 前端
构造json数据
python中有一个内置库,专门负责json数据的处理
- 1.1) 将json数据转换成python数据
json数据 | python数据 |
---|---|
number | int/float |
string | str, 可能会出现将双引号变成单引号 |
boolean | bool, true -> True; false -> False |
array | list |
dictionary | dict |
空 | null -> None |
- 1.2)loads方法
json.loads(字符串,encoding = 'utf-8') - 解析json数据,返回python数据
字符串要求:字符串中内容本身就是一个json数据(去掉引号后,是一个json类型的数据)
result = json.loads('"abc"', encoding='utf-8')
result = json.loads('100.23', encoding='utf-8')
- 2.1) python 转json
python数据 | json数据 |
---|---|
python数据 | json数据 |
int/float | number |
bool | boolean,True --> true, False --> false |
str | string, 将单引号变成双引号 |
list、tuple | array |
dict | dictionary |
空值 | None -> null |
json.dumps(python数据) --> python数据转化为对应json的字符串
result = json.dumps(100)
print(type(result), result)
result = json.dumps('abc')
print(type(result), result) # '"abc"'
result = json.dumps(True)
print(type(result), result) # 'true'
result = json.dumps([12, 'abc', [1, 2], True])
print(type(result), result) # '[12, "abc", [1, 2], true]'
result = json.dumps((12, True, 'abc', (1, 2)))
print(type(result), result) # '[12, true, "abc", [1, 2]]'
#####3json 文件操作
```python
with open('./sda.txt', 'r',encoding='utf-8') as f:
#得到python数据
result = json.load(f)
with open('./sdsd.json', 'w', encoding = 'utf-8' as f:
json.dump([100, 'abc], f)