day17总结-文件操作

文件操作

1.数据本地化和数据持久化

通过文件将数据存到硬盘中

2.文件内容操作

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

2.1打开文件

open(file,mode,encoding=None) --以指定方式打开指定文件,并返回被打开的 文件对象

file --需要打开的文件路径,传参时实参为字符串格式,需要用引号括起来

​ ./ --当前文件所在目录(可以省略)

​ ../ --当前文件所在目录的上层目录

mode --表示打开方式,传参时实参为字符串格式,需要用引号括起来

​ r --默认值,以读的方式打开文件(只能进行读操作)

​ w --以写的方式打开文件(只能进行写操作),会覆盖原文件内容

​ a --以写的方式打开文件(只能进行写操作),在原文件内容后追加

​ rb/br --以读的方式打开文件(只能进行读操作),读出来的内容是二进制数据

​ wb/bw --以写的方式打开文件(只能进行写操作),将二进制数据写入文件中

​ + --以读写的方式打开

encoding --文本编码方式,传参时实参为字符串格式,需要用引号括起来

​ utf-8,文本编码只针对文本文件,二进制文件不能设置编码方式

2.2文件操作

2.2.1文件读操作

文件对象.read(字节数) --获取文件中读写位置往后字节数的内容并返回(回车算一个字节),不写字节数参数表示从读写位置开始,读到文件结尾,并且返回(初始读写位置默认在文件开头),结果类型是str

文件对象.seek(字节数) --将读写位置移动到指定字节数处,为0表示文件最开始的位置

文件对象.readline(字节数) --读取当前读写位置所在行后字节数的内容,若字节数为空,则读取读写位置到当前行末的内容并返回,结果类型是str

文件对象.readlines(字节数) --读取读写位置所在行后字节数的内容,结果是list,且list列表的元素是每行内容的字符串格式(加引号)。元素内容不包含读写位置所在行之前的内容。且最后的读写位置所在行的整行内容都会作为元素内容(即使不是在行末)。此时读写位置也会移到下行行首。若不加字节数保留为空则读取读写位置所在行后到文件末尾的内容,结果是list,且list列表的元素是每行内容的字符串格式(加引号),元素内容不包含读写位置所在行之前的内容。

2.2.2文件写操作

文件对象.write(写的内容) --将制定内容写到指定文件中,根据open时mode是w还是a,来决定是覆盖还是追加内容。返回结果是写入的str内容的长度。

文件对象.writelines() --和write差不多呢。。

2.3关闭文件

文件对象.close()

注意:当打开文件的时候如果以读的方式打开一个不存在的文件会报错,以写(w,a)打开一个不存在的文件则不会出现异常,并且会自动创建对应的文件再打开。

2.4二进制文件的操作

2.4.1二进制操作

打开文件时mode加b参数,且encoding不能再写utf-8了

rb --读的时候,获取到的是二进制数据(bytes)

wb --写的时候要求写入内容类型是二进制

普通的文本文件可以通过二进制的形式去打开,影响只是获取到的内容,和写进去的内容的数据类型。

二进制文件只能以二进制形式打开(例如:图片,视频,音频等)

2.4.2二进制数据

一般二进制数据都是通过网络请求获取到,或者通过读取本地的二进制文件来取到。

将字符串转换成二进制:

bytes(字符串,编码方式)

字符串.encode(编码方式)

将二进制转换成字符串:

str(二进制数据,编码方式)

二进制数据.decode(编码方式)

以上编码方式一般都为utf-8

2.5文件上下文

with open(文件路径,打开方式,编码方式) as 文件对象:

​ 操作文件

文件操作完成后,会自动关闭


3.json

3.1json数据

满足json格式的数据就是json数据

json格式:一个json有且只有一个数据,这个数据必须满足是json支持的数据类型

json支持的数据类型:

数字(number) --包含所有的数字(整数和小数),如:3,-4,3.14,3e4

字符串(string) --只能用双引号引起来的字符集,字符也支持转义字符,编码字符,如"abc\n","123as","学习","\u4e00cv"

布尔(bool) --true/false,首字母都小写

数组(array) --相当于python中的列表,如['adc',123,true,[123,'123','asd']]

字典(dictionary) --相当于python中的字典,json字典中key值要求必须是字符串

空值 --null,相当于None

3.2使用json

解析json数据(获取到json数据后,将json中想要的东西解析出来) --做前端开发人员的工作

构造json数据:

在python中有一个内置库,专门负责json数据的处理:json库(import json)

  1. 将json数据转换为python:

json数据 python数据

number int/float

string str,可能会出现将双引号变单引号

bool bool,true->True,false ->False

array list

dictionary dict

空 null->None

json.loads(字符串,encoding='utf-8') --解析json数据,返回json对应的python数据

字符串要求:字符串中内容本身就是一个json数据(去掉引号后,本身就是一个json数据)

  1. python转json

python数据 json数据

int/float number

bool bool,True -> true,False-> false

str string,将单引号变为双引号

list/tuple array

dict dictionary

空 None->null

json.dumps(python数据) -->将python数据转换为对应的json数据字符串,结果是字符串。

  1. json文件操作

json.load(文件对象) --将文件对象中文件内容转换成python数据,文件内容必须是json数据

json.dump(python数据,文件对象) --将python数据转换成json字符串再写入指定文件中


4.应用

  1. 数据怎么本地化

数据保存在本地文件中一份

每次需要用到这个数据的时候,不是直接给值,而是从本地文件中读取他的值

数据修改完后,要将最新的数据保存在本地文件中

  1. 什么时候用到json文件

需要持久化的数据是字典,列表,元祖

你可能感兴趣的:(day17总结-文件操作)