with open(file_name,'r|w|a') as f:
open()
:只有在使用python内置的open()
函数打开一个文件,创建一个file对象后,相关的方法才可以调用它进行读写操作。file object = open(file_name [, access_mode][,buffering]) #------------------# file_name:是一个包含了想要访问文件的文件名称的字符串值。 access_mode:决定了打开文件的模式:只读(r),写入(w),追加(a)等。默认为只读(r) buffering: 如果buffering的值设为0,就不会有寄存; 如果buffering的值设为1,访问文件时会寄存行; 如果buffering的值设为大于1的整数,表明这就是寄存区的缓冲大小; 如果buffering的值设为负数,寄存区的大小为系统默认; #-----------------#
读 | y | y | y | y | ||
---|---|---|---|---|---|---|
写 | y | y | y | y | y | |
创建 | y | y | y | y | ||
覆盖 | y | y | ||||
模式 | r | r+ | w | w+ | a | a+ |
指针在开始 | y | y | y | y | ||
指针在结尾 | y | y |
file对象的属性 | 描述 |
---|---|
file.closed | 返回true:如果文件已经关闭,返回true;否则返回false |
file.mode | 返回被打开文件的访问模式 |
file.name | 返回文件的名称 |
file.softspace | 返回false:如果用print输出后,必须跟一个空格符,则返回false。否则返回true |
close()
:刷新缓冲区里任何还没有写入的信息,并关闭该文件,这之后就不能再进行写入。当一个文件对象的引用被重新指定给另一个文件时,python会关闭之前的文件。fileObject.close()
要读取文件,首先需要打开文件:with open(file_name,'r|rb') as f:
r
:读取文本rb
:读取二进制文件然后读取文件内容:
f.read([count])
:读取文件的全部内容
count
:从已经打开的文件中要读取的字节计数f.readline()
:读取文件的一行f.readlines()
:一次读取文件所有内容,然后按行返回list
。读取文件后,会把文件内容存储为一个字符串对象
with:
:with的作用为自动打开关闭文件
open()
函数返回的这种有个read()
方法的对象,在Python中统称为 file-like Object
的对象read()
方法就行。rb
模式打开文件。with open('pic/mypic.jpg','rb') as f: print(f.read())
open()
函数传递encoding
参数。errors
参数表示要怎样处理编码异常with open('text/mytext.txt','rb',encoding='gbk',errors='ignore') as f: print(f.read())
with open(file_name,'w|wb') as f:
wb
:写入二进制文件w
:写文本,以w
模式写入文件时,如果文件已经存在,会直接覆盖(相当于删掉旧的),如果想要在后面接着写内容,使用a
附加模式。f.write(str)
:可以将任何字符串写入一个打开的文件中。
write()
函数不会在字符串的结尾加换行符StringIO
:在内存中读写strStringIO
:
from io import StringIO
StringIO
:f = StringIO()
f.write(str)
getvalue()
:获取写入的strStringIO
:
from io import StringIO
StringIO
:f = StringIO()
f.read()|f.readline()|f.readlines()
#写入StringIO: from io import StringIO f = StringIO() f.write('ssfaf') #读取StringIO: from io import StringIO f = StringIO('ssssssssssssss') print(f.read())
StringIO
只能操作str,要操作二进制数据,就需要使用BytesIO
BytesIO
:在内存中读写bytesBytesIO
:
from io import BytesIO
BytesIO
:f = BytesIO()
f.write(bytes)
getvalue()
:获取写入的bytesBytesIO
:
from io import BytesIO
BytesIO
:f = BytesIO()
f.read()|f.readline()|f.readlines()
pickle
模块实现的。import pickle
pickle.dumps()
:把任意对象序列化成为一个bytes
,然后就可以把bites
写入文件中。pickle.dump()
:直接把对象序列化后写入一个file-like Object:import pickle # 把变量b序列化:把变量b变成可以存储为文件的bytes d = 'sd' a = pickle.dumps(d) print(a) # 把序列化后的内容存储到文件中:因为序列化变量b后,为bytes类型,所以使用“wb|rb” f = open('pickle.txt','wb') # f.write(a) pickle.dump(d,f) f.close()
bytes
上,然后使用:
pickle.load()
:方法反序列化出对象# 反序列 f = open('pickle.txt','rb') d = pickle.load(f) f.close() print(d)
JSON类型 | Python类型 |
---|---|
{} | dict |
[] | list |
"String" | str |
1234.51 | int|float |
true|false | True|False |
null | None |
python的json
模块提供:Python对象-->JSON格式
:
首先,导入json
模块:import json
接着,使用
json.jumps(python_object)
:返回一个str
,此str
即为JSON
标准格式。json.jump()
:可以直接把JSON
写入一个file-like object
序列化:Python对象-->json格式。
然后,使用
json.loads()
:把json
字符串反序列化json.load(file_object,)
:从file-like object
中读取字符串并且反序列化反序列化:json格式-->Python对象。
import json d =dict(name='si',age=14,sex='nan',qq=(124,24,555)) # 把python对象-->json:序列化 # help(json.dumps) json_dumps_str = json.dumps(d) print(json_dumps_str) # help(json.dump) # f = open('json.txt','w') # json_dump_str = json.dump(d,f) # print(json_dump_str) # 把json格式-->python对象:反序列化 # help(json.loads) python_loads_object = json.loads(json_dumps_str) print(python_loads_object) # help(json.load) # f1 = open('json.txt','r') # python_load_object = json.load(f1) # print(python_load_object)