1.数据持久化(数据本地化)
保存在程序中的数据是保存中运行内存中的,当程序运行结束,内存会自动释放,数据也会消失
如果不希望数据随着程序的结束而消失,就需要将数据通过文件存储到硬盘里面
程序中经常用来保存数据的文件有:数据库文件(db,sqlite);json文件;plist文件;txt文件等
png文件、jdp文件、gif文件。。。MP4、mov、MP3文件等
2.文件操作(操作文件中的内容)
'''
步骤:打开文件 - 操作文件内容(读操作;写操作)- 关闭文件
打开文件;open(file;mode;encoding)
file --字符串:文件在电脑中的地址(文件路径)
路径可以写绝对路径也可以写相对路径
绝对路径:文件在电脑中的完整路径
相对路径:./代表当前目录(可以省略)
../当前文件的上层目录
.../以此类推
注意:当前目录指的是当前py文件所在的目录
mode --字符串:文件的打开方式,决定打开文件后能够对文件做什么以及读写的数据类型
'r' - 以只读的方式打开文件;读出来的内容是字符串
'rb' ='br' - 以只读的方式打开文件;读出来的内容是二进制数据(bytes)
'w'/'wt'/'tw' - 以只写的方式打开文件;将字符串写入文件,会清空原文件
'wb'/'bw' - 以只写的方式打开文件;将二进制写入文件
'a'/'at'/'ta' - 以只写的方式打开文件;将字符串写入文件,不会清空原文件,追加
'ab'/'ba' - 以只写的方式打开文件;将二进制写入文件,不会清空原文件,追加
encoding --字符串:设置文本文件的编码方式(只针对文本文件有效)一般用utf-8
注意:同一个文件读和写的编码方式一样
指针文本文件的文本操作有效,所有带'b'的打开方式都不能设置encoding
'''
3.读写操作
'''
1)读操作
文件对象.read() -- 获取整个文件的内容,以字符串或者二进制的形式返回
文件对象.readline() - 获取文本文件中一行的内容,以字符串或者二进制的形式返回
f.seek(0) 移动光标到文件开头
2)写操作
对象.write(内容) --
关闭文件
文件对象.close()
1.with - open
'''
打开文件,在文件作用域中对文件进行操作,离开文件作用域文件自动关闭
语法
with open(file, mode='r', encoding=None)as 文件对象:
操作文件(文件作用域)
'''
2.自动创建文件(打开不存在的文件)
'''
以读的方式打开不存在的文件,程序会报错
以写的方式打开不存在的文件,程序不会报错并且会创建一个空的文件
'''
3二进制文件的的读写
"""
1)普通文本文件:可以使用带t或者待d的读写方式去打开
2)二进制数据文件:视频文件:视频文件、音频文件、图片都是二进制文件
这些文件只能用带b的方式去打开
"""
1.怎么做的数据的持久化
"""
a.将数据保存到本地文件
b.需要这个数据的时候不是直接赋值而是从本地文件中去取值
c.当数据值发生改变后,将最高的数据更新到文件中
"""
2.eval的使用
将序列字符串转换成序列
统计当前程序运行的次数
with open('files/text.txt', 'r', encoding='utf-8')as f:
num = int(f.read())
num += 1
print('第%d次运行程序' % num)
with open('files/text.txt', 'w', encoding='utf-8')as f:
f.write(str(num))
练习注册账号
users = {}
while True:
user_name = input('用户名:')
pw = input('密码:')
users[user_name] = pw
value = input('是否继续(y/n):')
if value == 'n':
break
print(users)
json模块是python内置的模块,模块主要提供和json操作相关的函数
import json
什么是json数据
"""
json是一种通用的数据格式,几乎所有的高级语言都支持将json数据转换成当前语句数据,也支持将当前数据转换为json数据,
一般数据接口提供的数据都是json格式的数据
"""
2.json格式
"""
json格式:一个json只能有一个数据
这个数据必须是json支持的数据类型的数据
json支持的数据类型
数字类型(num):包括所有的数字(整数;小数;浮点数等等也支持科学计数法)
字符串 - - 用双引号引起来的字符集 编码/转义都支持
布尔值 -- 只有true和false
数组 -- 相当于python中的列表:[100,"asd",true]
字典 -- 相当于python中的字典:{}key必须是字符串
空值 -- 相当于None:null
"""
3.将json数据转化为python数据
"""
对应关系:
json python
数字类型 int/float
字符串 str;双引号可能变单引号
布尔值 bool;true-True;false-False
数组 list
字典 dict
空值 null - None
转换方法
json模块中有一个loads可以将json格式的数据转换成python对应的数据
loads(字符串) -- 将json格式的字符串转换成python数据
字符串:为json格式数据
"""
result = json.loads('true')
print(type(result), result)
4.将python数据转换成json
"""
1)转换关系
python json
int;float 数字
str 字符串,引号都会变成双引号
bool 布尔:True-true False-false
list;tuple 数组
dict 字典
None null
2)转换方法
dumps(数据) - 将括号中的python数据转换成json格式的字符串
"""