文件操作与json数据
1.os库提供操作了很多和文件管理
2.数据本本地化和数据持久化 - 通过文件将数据存到硬盘中
3.数据库文件、 txt、json、plist、xml、png文件、MP4、mp3
文件操作 ---- 文件内容操作
1.基本步骤:打开文件 ----> 操作文件(读/写) -----> 关闭文件
- 1.1打开文件:
"""
open(file,mode,encoding = None) --- 以指定的方式打开指定文件,并且返回被打开的文件对象
file -- 字符串,需要打开的文件的路径
./ --- 当前文件所在的目录 (./可以省略)
../ ---- 当前文件所在目录的上层目录
mode --字符串,打开方式
r --- 默认值,以读的方式打开文件(只能进行读操作),读出来的是文本
w --- 以写的方式打开文件(只能进行写操作),覆盖
a --- 以写的方式打开文件(只能进行写操作),追加
rb/br ---- 以读方式打开文件(只能进行读操作),读出来的内容是二进制数据
wb/bw ---- 以写的方式打开文件(只能进行写操作),将二进制数据写入文件中
+ ----- 以读写方式打开(了解)
encoding -- 文本编码方式
utf-8
注意:文本编码知针对文本文件、二进制文件不能设置编码方式
"""
- 1.2 文件操作
- 文件读操作:
"""
文件对象.read() --从读写位置开始,读到文件结尾, 获取文件中所有的内容,并且返回(字符串)(读写位置默认在文件开头)
文件对象.seek(字节数) --- 将读写位置移动到指定的地方(了解)
"""
- 文件对象.read()例子:
f = open('./files/test.text', 'r', encoding='utf-8')
while True:
a = f.readline()
if a == '':
break
print(a)
- 文件写操作:
"""
文件对象.write(写的内容) - 将指定内容写入到指定的文件中,返回的是写入内容的长度
# f = open('./files/test.text', 'a', encoding='utf-8') # (追加)
# f = open('./files/test.text', 'w', encoding='utf-8') # (覆盖)
# f.write('床前明月光')
"""
stu = [1, 2, 3, 4, 5, 6]
stu = str(stu)
with open('./files/test.txt', 'w', encoding='utf-8') as f:
f.write(stu)
1.3 关闭文件:
f.close() --- 对象.close 关闭文件
注意:
"""
当打开文件的时候,如果以读的方式打开一个不存在的文件,会出现异常,报错。
如果以写的方式打开一个不存在的文件,不会出现异常,并且会自动创建对应的文件再打开。
"""
二进制文件
1.二进制文件操作:
"""
rb - 读的时候获取的是二进制数据(bytes)
wb - 写的时候写入的内容要求类型是二进制文件
普通的文本文件可以通过二进制的形式去打开,影响只是获取到的内容,和写进去的内容的数据类型
二进制文件只能以二进制的形式打开(例如:图片、视频、音频等)
"""
2.二进制数据:
"""
一般二进制数据都是通过网络请求获取到,或者通过读取本地的二进制文件来取到
1)将字符串转换成二进制
bytes(字符串,encoding = 'utf-8')
字符串.encode(编码方式)
2)将二进制转换成字符串
str(二进制数据,编码方式)
二进制数据.decode(编码方式)
"""
3.文件上下文(文件域):
"""
with open(文件路径,打开方式,编码方式) as 文件对象:
操作文件
文件操作完成后,会自动关闭
"""
json数据
1.json数据:
"""
满足json格式的数据就叫json数据
2)json格式:一个json有且只有一个数据,这个数据必须满足是json支持的数据类型
3)json支持的数据类型:
数字类型(number) ---- 包含所有的数字(整数和小数),支持科学计数法,例如:100 , 12.8,3e4
字符串(string) ---- 用双引号括起来的字符集,字符也可以是转义字符和编码字符,例如:"abc","1234","你好","abc\n","\u4e01"
布尔(bool) ----- true/false
数组(array) ------ 相当于python中的列表,例如:[100,"abc",true,[1,2,3]]
字典(dictionary) ---- 相当于python中的字典,例如:{"a":10, "b":56,"c":true} ---- 在json中key只能是字符串
空值 ------ null,相当于python中的None
"""
2.使用json:
2.1 解析json数据(获取到json数据将json中想要的东西解析出来) --- 做前端开发人员的工作
2.2 构造json数据:在python中有一个内置库,专门负责json数据的处理:json库
2.3 应用:
- 1.json转python(json数据解析)
"""
1)将json数据转换成python数据
json数据 python数据
number int/float
string str,可能会出现将双引号变成单引号
boolean bool,true --> True; false -> False
array list
dictionary dict
空 null ---> None
loads方法:
json.loads(字符串,encoding = 'utf-8') --- 解析json数据,返回json对应的python数据
字符串要求:字符串中内容本身就是一个json数据(去掉引号后,本身就是一个json数据)
"""
json.loads()
with open('./json1.json', 'r', encoding='utf-8') as f:
result1 = f.read()
result1_py = json.loads(result1, encoding='utf-8')
- 2.将python数据转换成json:
"""
2.1)python转json
python数据 json数据
int/float number
bool True ---> true, False --->false
str string,将单引号变成双引号
list、tuple 数组(array)
dict dictionary
空值 None ------> null
2.2)
json.dumps(python数据) ----> 将python数据转换成内容是对应的json数据的字符串,结果是一个字符串!(去掉引号之后是json数据)
"""
- 3.json文件操作
"""
json.load(文件对象) --- 将文件对象中文件的内容转换成python数据
文件的内容只能是json数据
json.dump(python数据,文件对象) ---- 将python数据转换成json字符串再写入指定文件中
"""
数据本地化
1.数据怎么本地化?
- 每次需要用到这个数据的时候,不是直接给值,而是从本地文件中读取它的值
- 数据修改完后,要将最新的数据保存到本地文件中