- os库提供了很多和文件管理操作
1.数据本地化和数据持久化 - 通过文件将数据存到硬盘中
- 数据库文/件txt/json/plist/xml/png文件/mp3/mp4/等等.......
2.文件操作 - 文件内容操作
- 基本步骤:打开文件 --> 操作文件(读/写) --> 关闭文件
1)打开文件
open(file,mode,encoding=None) -->以指定方式打开指定文件,并返回被打开的文件对象
file --> 字符串,需要打开的文件路径
./ -->当前文件所在目录(./可以省略)
../ -->当前文件所在目录的上层目录
mode --> 字符串,打开方式
r --> 默认值,以读的方式打开文件(只能进行读操作),读出来的是文本
w --> 以写的方式打开(只能进行写操作)覆盖
a --> 以写的方式打开(只能进行写操作)追加
rb / br -->以读的方式打开文件,(只能进行读操作),读出来的数据是二进制
wb / bw -->以写的方式打开文件(只能进行写操作),将二进制数据写入文件中
+ --> 以读写的方式打开(了解)
encoding --> 文本编码方式 ()
utf-8 (支持了所有语言)
注意:文本编码只针对文本文件,(>二进制文件不能设置编码方式!!!
gbk
2)文件操作
文件对象.read() -->获取文件中所有的内容,从读写位置开始,读到文件结束,并返回
(读写默认在文件开头)
文件对象.seek(字节数) --> 将读写位置移动到指定位置
1.--------------文件读操作------------
def abc():
f = open('./qq/12.txt','r',encoding='utf-8')
ff = f.read()
print(ff)
ff1 = f.read()
print(ff1)
将读取光标移到文件开头
f.seek(0)
f3 = f.read()
print(f3)
#2)reabline -->读一行
# f.seek(0)
# print('读一行:',f.reabline())
f.seek(0)
# 练习:一行一行的将文件读完
while True:
f5 = f.readline()
if not f5:
break
print('==============',f5)
# for i in f.seek(0):
# print('===============',f.readline())
#
#3)readlines() 读一行读所有 返回列表 (文本文件才有效)
f.seek(0)
print(f.readlines())
#============2.文件写操作=============
"""
文件对象.write(写的内容) -->将指定内容写入到指定文件中,返回被写入的内容长度
"""
f = open('./qq/12.txt', 'w', encoding='utf-8')
f6 = f.write('床前明月光')# 会覆盖原来的内容,
print(f6)
# 关闭文件
f.close()
# ===========
"""
注意:打开文件的时候,如果以读的方式打开一个不存在的文件,会报错.
如果以写的方式,打开一个不存在的文件,不会报错,会自动创建文件自动打开
"""
abc()
1.json数据
"""
1)满足json格式的数据就加json数据
2)json格式:一个json数据只能有一个数据,这个数据必须是json支持的数据类型
3)json支持的数据类型:
数字类型(number) -->包含所有的数字(整数和小数)并且支持科学计数法,例如:100,12.8,3e4
字符串(string) -->字符串是通过用双引号的字符集,字符也可以是转义字符和编码字符,
例如:"abc","中文","123","abc\n123","\u4e01abc"
布尔(bool) --> true/false
数组(array) --> 相当于python的列表,[100,"abc",true,[1,2,3]]
字典(dictionary) -->相当于python中的字典,{"a":10,"b":56,"c":true}
空值 --> null --> 相当于python中的 None
"""
# 2.使用json
# 1)解析json数据(获取到json数据后,将json中想要的东西解析出来) -- 做前端开发人员的工作
# 2)构造json数据
"""
在python中有一个内置的库,专门负责json数据的处理:json库
1)将json数据转换成python数据
json数据 python数据
number int/float
string str,可能出现双引号保存单引号
boolean bool,true-->True ,false-->False
array list
dictionary dict
空 null--> None
2)loads方法
json.loads(字符串,encoding='utf-8') --> 解析json数据,返回一个json对应的python数据
字符串要求:字符串中本身就是一个json数据(去掉引号后,本身就是一个json数据)
"""
#=================1.json转pytonon(json数据解析)============
f = json.loads('"a"',encoding='utf-8')
print(f,type(f))
f = json.loads('111.11',encoding='utf-8')
print(f,type(f))
f = json.loads('true',encoding='utf-8')
print(f,type(f))
f = json.loads('[10,23,"abc"]',encoding='utf-8')
print(f,type(f))
f = json.loads('{"a":11,"b":34}',encoding='utf-8')
print(f,type(f))
#==============
with open('./jsonData.json','r',encoding='utf-8') as fa:
con = fa.read()
print(con)
con_py = json.loads(con,encoding='utf-8')
data = con_py['data']
mxa_di = max(data, key=lambda x: int(x['favourite']))
print(mxa_di['favourite'],mxa_di['name'],mxa_di['text'])
# =================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->bull
2.2)
json.dumps(python数据) -->将python数据转化成json数据的字符串,结果是一个字符串!
"""
re = json.dumps(100)
print(type(re),re)
re = json.dumps('abc')
print(type(re),re)
re = json.dumps([12,2,[1,2,3]])
print(type(re),re)
re = json.dumps((100,True,'abc',(1,2)))
print(type(re),re)
re = json.dumps({'name':'小米','age':18})
print(type(re),re)
#==================3.json文件操作==================
"""
json.losd(文件对象) -->将文件对象中文件的内容转换成python数据
文件的内容只是json数据
只要求文件中的内容是json数据
json.dump(python数据,文件对象) -->将python数据转成json字符串再写入指定文件中
"""
# ====================3.json文件操作(了解)=====================
"""
json.load(文件对象) - 将文件对象中文件的内容转换成python数据
文件的内容只能是json数据(文件后缀没有要求)
json.dump(python数据,文件对象) -- 将python数据转换成json字符串再写入指定文件中
"""
with open('./files/test.txt', 'r', encoding='utf-8') as f:
result = json.load(f)
# result = json.loads(f.read(), encoding='utf-8')
print(type(result), result)
with open('./test2.json', 'w', encoding='utf-8') as f:
json.dump([100, True, 'abc'], f)
# result = json.dumps([100, True, 'abc', None])
# f.write(result)
1.每次运行程序的时候打印当前是第几次运行这个程序
import json
"""
1.怎么数据本地化?
每次需要用到这个数据的时候,不是直接给值,而是从本地文件中读取他的值
数据修改完后,要将最新的数据保存到本地文件中
2.声明时候需要用到json文件
需要持久化的数据是字典,列表,元祖
3.作业:登录注册系统
"""
with open('./qq/abc.txt','r',encoding='utf-8') as f:
f1 = int(f.read())
f1+=1
print(f1)
with open('./qq/abc.txt','w',encoding='utf-8') as f:
f.write(str(f1))
# 练习2,实现添加学生的功能,要求,之前要添加的学生要一直在
with open('./qq/zz.json','r',encoding='utf-8') as f:
stu = json.loads(f.read())
# stu = []
def stu1():
name = input('姓名:')
age = input('年龄:')
stu2 = {'name':name,'age':int(age)}
stu.append(stu2)
stu1()
stu1()
with open('./qq/zz.json','w',encoding='utf-8') as f:
f.write(json.dumps(stu))
# with open('./qq/zz.json','r',encoding='utf-8') as f:
# print(f.read())
print(stu)
# class stu:
# def __init__(self):
#
#
#
# def