文件的打开和关闭
打开
通过open打开
open(file,mode='r',encoding = None)
file:用来指定打开的文件(文件的路径)
mode:打开文件的模式,默认是 ‘r’,表示只读方式打开
encoding:打开文件时的编码方式,windows中默认是gbk。
open 函数会有一个返回值:打开的文件对象
关闭
file.close()
路径
\文件位置,为转移字符,推荐使用/
文件的打开模式
- mode:打开文件的模式,默认是 ‘r’,表示只读方式打开
- 读:rb r 写:wb w a
- r :只读模式,打开文件后,只能读取,不能写入,否则报错。文件不存在的话,同样会报错。
1.read()读取所有内容
2.readline()每次读取一行
3.readlines()读取所有的行保存在列表中
4.readable()判断是否可读 - w :写入模式,打开文件后,只能写入,不能读取,否则报错。如果文件存在,会覆盖文件,如果文件不存在,会创建文件。
- b :以二进制形式打开文件。rb 以二进制读取;wb 以二进制写入。
- r+ :可读可写模式。w+ :是可写可读。(尽量不用这两种模式)
- a :追加模式。会在文本的最后追加内容。文件不存在会创建文件。
- t :文本形式打开。
csv文件的读写
CSV文件,Comma-Separated Values(逗号分隔值或字符分隔值),其文件以纯文本的形式存储表格数据。
可以把它理解为一个表格,只不过这个表格是以纯文本的形式显示的,单元格与单元格之间默认使用逗号进行分隔;每行数据之间使用换行进行分隔。
csv文件的写入
file = open('demo.csv','w',encoding = 'utf8',newline='')
newline 表示识别换行- writerow 是列表类型
- 可以以此写入一行,也可以一次写入多行 用 writerows
- csvr.reader阅读器
将数据写入内存
首先需要引入
1.直接引入 import os ,用的时候os.path.join() 调用过程需要写完整
2.from 引入 from io import StringIo 不需要写完整的调用过程
- BytesIO 的参数必须是二进制
- 用BytesIO 是编码解码要用同一种
序列化和反序列化
write 只能写入字符串和二进制,所以想要将对象(列表、字典、元组等写入到文件里就需要序列化
序列化:用于对象的存储和传输
反序列化:恢复对象
Python 中提供了 json 和 pickle 两个模块用来实现数据的序列化和反序列化。
- 将数据转换成为字符串(repr/str) 再写入文件,使用 json 模块。
- 将数据转换成为二进制 再写入文件,使用 pickle 模块。
json
- json 可以认为是字符串
- 用双引号代表字符串,最外层用单引号
- dumps的作用是将数据转换成为字符串
names = '["Tom", "Toy"]'
json 里将数据序列化有两个方法:
dumps :将数据转换为 json 字符串,不会将数据保存到文件里。
dump :将数据转换成 json 字符串的同时,写入到指定文件。
pickle
pickle 模块可将数据转化为 二进制 形式。
序列化:
dumps:将python里的数据转换成为二进制
dump:将python里的数据转换成为二进制,同时保存到文件
反序列化:
loads:将二进制加载成为python里的数据
load:读取文件里的二进制内容,并将文件的内容转换成为python里的数据