标签:一个 readline 模式 byte 文件内容 with 决定 实现 默认
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 StringIOStringIO:f = StringIO()f.write(str)getvalue():获取写入的strStringIO:
from io import StringIOStringIO: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,要操作二进制数据,就需要使用BytesIOBytesIO:在内存中读写bytesBytesIO:
from io import BytesIOBytesIO:f = BytesIO()f.write(bytes)getvalue():获取写入的bytesBytesIO:
from io import BytesIOBytesIO: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)
标签:一个 readline 模式 byte 文件内容 with 决定 实现 默认
原文地址:https://www.cnblogs.com/bright-future/p/14729131.html