2019-04-29_day12_文件操作总结

day_12_文件操作


1 . 数据持久化:将数据保存到文件中,然后将文件保存在硬盘中

程序中产生的数据默认保存在内存中,程序结束数据会自动销毁。如果希望程序结果不销毁,呢么需要对这个数据做数据持久化。

2. 文件操作(对文件内容进行操作)

基本步骤:打开文件 --> 操作文件(读/写)--> 关闭文件

2-1 打开文件

open(file, mode='r', encoding=None) #以指定的方式打开文件,并返回文件对象
# 说明
# file -> 文件路径(可以写绝对路径,可以写相对路径)
# 绝对路径 -> E:\python_learn\learn\千峰培训1902\day_12_文件操作\test.txt
# 相对路径 -> (需要将文件保存在工程目录下)(.\test.txt)
#           ./ -> 代表当前目录
#           ../ -> 代表当前目录的上层目录
#           .../ -> 代表当前目录的上层目录的上层目录
# mode - 字符串,文件的打开方式(决定打开文件后能够进行的操作,和操作方式)
#   'r' - 以只读的方式打开文件,读出来的数据是字符串
#   'w' - 以只写的方式打开文件,写入的数据是字符串(覆盖源文件的内容)
#   'rb'/'br' - 以制度的方式打开文件,读出来的数据是二进制
#   'wb'/'bw' - 以只写的方法打开文件,写入的数据是二进制数据
#   'a' - 以只写的方式打开文件,写入的数据是字符串(在源文件的最后添加内容)
# encoding - 字符,文本编码方式
#            'utf-8'(mac) - 支持中文
#            'gbk'(windows) - 只支持英文
# 注意:只有文本文件才能设置encoding,二进制操作不能设置encoding

2-2 操作文件

f = open(file, mode='r', encoding=None)
# f 保存文件对象,只有打开文件才能得到文件对象
# 1.读操作:文件对象.read() - 返回文件中的内容
#          文件对象.readline() - 读一行内容(从读写位置开始到一行结尾)
# 读不到内容返回空字符串
content = f.read()
# 设置读写位置在文件开头
f.seek(0)
# 读一行
f.readline()
# 2.写操作:文件对象.write(内容)
# 文件对象.write(内容) - 将内容写入指定文件

2-3字节类型(bytes)

2-3-1 数据来源:

a. 将其它类型转换成bytes类型:整型,字符串

# 字符串转二进制
# ''.encode()
# 二进制转字符串
# str('你好'.encode(),encoding = 'utf-8')
# '你好'.encode().decode()

b. 以'rb'/'br'的方式读文件

2-4 二进制文件读写

图片、视频、音频等都是二进制文件。这些文件只能以带’b'的方式打开然后操作

2-5 关闭文件

f.close()

3-1 打开文件语法(实用)

with open() as 文件对象:

文件的操作

3-2 数据持久化

3-2-1 要为这个数据创建对应的本地文件

3-2-2 程序中需要这个数据的值的时候从文件中读文件的值

3-2-3 这个数据的值发生改变后要将最新的数据更新到本地文件中



3.什么是json数据(import json)

满足json格式要求的数据就是json数据;文件内容满足json格式要求,就是json文件

1.json格式要求

a. 一个json有且只有一个数据,b.这个必须是json支持的数据类型对应的数据

2.json支持的数据类型

数字类型(number) - 包含所有的数字(整数和小数)

字符串(string)- 使用双引号引起来的字符集,支持转义字符,例如:”abc“,”123\nabc"

布尔(boolean) - 只有true,false

数组(array) - 相当于python中的列表,[12,"avc",true,[1,3]]

字典(dictionary) - 相当于python中的字典,键只能是字符串,值任意

null - 相当于 None,空置

2.python数据和json数据的相互转换

python 中内置了一个json模块,用来支持json相关操作

2-1 json转python

数字 int/float

字符串 str,有可能将双引号变成单引号

布尔 bool,true ->True, flase -> Flase

数组 list

字典 dict

null None

json.loads('字符串',encoding = 'utf-8') -> 将字符串转成python对应的数据

注意:这儿的字符串要求字符串中的内容必须是json格式的数据(去掉字符串最外面的引号,本身就是一个json数据)

2 - 2 python 转 json

int/float 数字

bool 布尔 ,True -> true, Flase ->flase

str 字符串

list/typle 数组

dict 字典

None null

json.dumps(数据) --> 将数据对象转换成json格式的字符串

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容