文件操作流程:打开文件 - 操作文件(读/写)-->关闭文件
'''
文件模式.png编码方式 --> 主要针对文本文件的读写(不同的操作系统默认的文本编码方式不同)
Windows gbk
unix utf-8
encoding 参数可以指定我们打开文件所使用的编码方式,比如 utf-8 或者 gbk。请保证使用文件本身的编码方式打开,否则会出现乱码,二进制文件默认生成 bytes 字符串类型,不能指定 encoding 参数
a.放在工程外面的文件,写绝对路径
b.将文件放在工程目录下的某个位置,写相对路径
当你的py文件直接放在工程目录下,想要使用open打开工程中其他文件
使用./ ,当py文件在工程目录的子目录下面,想要使用open打开工程中的其他文件使用../
打开文件,返回文件句柄(文件代言人)
如果文件不存在,以读的方式打开会报错,以写的方式打开会新建一个文件
1.读文件(获得文件的内容,并且返回)
read(self, n: int = -1) -> AnyStr
readline(self, limit: int = -1) -> AnyStr
readlines(self, hint: int = -1) -> List[AnyStr]
read() 方法用来直接读取文件对象并返回字符串,最多读取给定数目个字符(注意不是字节)。如果没有给定 n 参数(默认值为 -1)或者 n 值为负,文件将被读取直至末尾。
readline() 方法读取打开文件的一行(读取下个行结束符之前的所有字节)。然后整行(包括行结束符)作为字符串返回。和 read() 相同,它也有一个可选的 limit 参数,默认为 -1,代表读至行结束符。如果提供了该参数,那么在超过 limit 个字节后会返回不完整的行。
readlines() 方法并不像其它两个输入方法一样返回一个字符串。它会读取所有(剩余的)行然后把它们作为一个字符串列表返回。它的可选参数hint 代表返回的最大字节大小。如果它大于 0 ,那么返回的所有行应该大约有 hint 字节(可能稍微大于这个数字,因为需要凑齐缓冲区大小)。
2、写文件
write(self, s: AnyStr) -> int
writelines(self, lines: List[AnyStr]) -> None
write() 内建方法功能与 read() 和 readline() 相反。它把含有文本数据或二进制数据块的字符串写入到文件中去。
和 readlines() 一样,writelines() 方法是针对列表的操作,它接受一个字符串列表作为参数,将 它 们 写 入 文 件。行 结 束 符 并 不 会 被 自 动 加 入,所 以 如 果 需 要 的 话,你 必 须 在 调 用 writelines() 前给每行结尾加上行结束符。
注意这里并没有 "writeline()" 方法,因为它等价于使用以行结束符结尾的单行字符串调用 write() 方法。
json文件
最外层只能是一个字典,一个数组,一个字符串
支持的数据类型:字符串("abc'),数字(100,21,35),布尔值(true/false),数组([1,23,'a]),字典({key:value})
null (None)
json格式:内容的最外层
1.内容是字符串
2.最外层是字典,字典里面就必须是键值对
3.最外层是数组(列表),数组里面的内容必须是数组数据
1.json文件的读操作
with open('./test.json','r',encoding='utf-8') as f:
content =f.load(f)
# 直接使用read()读的话,获得的只是字符串数据
# load(文件对象):获得指定json文件的内容
# 返回值的类型是json文件最外层对应的数据类型
json文件类型对应的python文件类型
dict ---> dict
array ---> list
string ---> str
number ---> int/float
true/flase ---> True /False
numm ---> None
content = json.load(f)
2.json文件的写操作
with open('../new.json','w',encoding='utf-8') as f:
#写数据
#dump(写的内容,文件对象)
w_content = 'POI'
json.dump(w_content,f)
练习:保存一个字典到本地,下次打开的时候可以继续添加
name = input('名字:')
tel = input('电话:')
student ={'name':name,'tel':tel}
try:
with open('../data1.json','r',encoding='utf-8') as f:
all_students = json.load(f)
except FileNotFoundError:
all_students =[]
all_students.append(student)
with open('../data1.json','w',encoding='utf-8') as f:
json.dump(all_students,f)
3.json模块的其他操作
loads(字符串,编码方式 ) -->
json.loads()函数是将json格式数据转换为字典或者列表(可以这么理解,loads函数是将字符串转化为字典或者列表)
content = json.loads('["a",{"a":1}]',encoding='utf-8')
print(type(content))
<class 'list'>
'''
json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为字符串)
'''
import json
print(type(json.dumps(['aaa',1,True])))
<class 'str'>
网友评论