python文件对象存取解析及方法
1.1 打开文件
python文件通过open()函数打开,返回一个文件对象。 1.1.1 open()
用法 open(file, mode="r")
描述
python的内置函数ope(),打开文件,返回一个文件对象。
参数
file:包括文件名的文件路径字符串。
mode:文件打开方式,默认为r,只读。
序号
模式
操作
文件不存在
处理文件内容
1
r
只读,用于读文件
报错
从头开始读
2
w
只写,用于写文件
创建
覆盖原文件内容,从头开始写
3
a
只写,用于写文件
创建
文件末尾追加内容
4
r+
读写,用于读写文件
报错
从头读,写时覆盖原文件内容
5
w+
读写,用于读写文件
创建
从头读,写时覆盖原文件内容
6
a+
读写,用于读写文件
创建
从头读,写时文件末尾追加内容
出参
返回文件对象
示例 >>> filepath=r"E:documentsF盘file.txt" # r,不存在报错 >>> f=open(filepath,"r") Traceback (most recent call last): File "", line 1, in f=open(filepath,"r") FileNotFoundError: [Errno 2] No such file or directory: "E:documentsF盘file.txt" # w,不存在创建 >>> f=open(filepath,"w") >>> filepath1=r"E:documentsF盘file1.txt" # r,不存在报错 >>> f1=open(filepath1,"r") Traceback (most recent call last): File "", line 1, in f1=open(filepath1,"r") FileNotFoundError: [Errno 2] No such file or directory: "E:documentsF盘file1.txt" # a,不存在创建 >>> f1=open(filepath1,"a")1.2 文件操作1.2.1 close()
描述
python文件的close()方法,用于关闭文件对象,关闭后不可调用file对象方法。
示例 >>> filepath=r"E:documentsF盘file.txt" >>> f=open(filepath,"r") >>> f.readline() "name:梯阅线条, " >>> f.close() # close()后,不可调用file方法 >>> f.readline() Traceback (most recent call last): File "", line 1, in f.readline() ValueError: I/O operation on closed file.1.2.2 write()
用法 write(text)
描述
python文件的write()方法,将字符串写入到文件,返回字符串长度。
参数
text:字符串
出参
返回字符串长度
示例 >>> filepath=r"E:documentsF盘file.txt" >>> s="""name:梯阅线条, des:软件测试开发""" >>> f=open(filepath,"w") >>> f.write(s) 21 >>> f.close() >>> len(s) 211.2.3 read()
用法 read(size=-1)
描述
python文件的read()方法,一次读取全部文件内容或指定个数的字符的文件内容。
参数
size:字符数,默认-1,或负数,表示读取整个文件,即一直读到EOF。
否则,读到size个字符为止。
出参
返回字符串
示例 >>> f=open(filepath,"r") >>> txt=f.read() >>> print(txt) name:梯阅线条, des:软件测试开发 >>> f.close() >>> f=open(filepath,"r") >>> txt=f.read(5) >>> print(txt) name: >>> f.close()1.2.4 readline()
用法 readline(size=-1)
描述
python文件的readline()方法,一次读取一行或者一行指定字符数的文件内容。
参数
size:字符数,默认为-1,表示读取一行,未送则读取一行。
大于0整数,则读取一行中的指定个数size字符。
出参
返回一行内容,遇到结束符EOF,返回空字符。
示例 >>> f=open(filepath,"r") >>> txt=f.readline() >>> txt "name:梯阅线条, " >>> f.readline() "des:软件测试开发" >>> f.readline() "" >>> f.close() >>> f=open(filepath,"r") >>> f.readline(5) "name:" >>> f.close() >>> f=open(filepath,"r") >>> f.readline(100) "name:梯阅线条, " >>> f.close()1.2.5 readlines()
用法 readlines()
描述
python文件的readlines()方法,一次读取全部行。
参数
略
出参
返回行列表。
示例 >>> f=open(filepath,"r") >>> txtlist=f.readlines() >>> txtlist ["name:梯阅线条, ", "des:软件测试开发, ", "url:tyxt.work "] >>> f.close()1.2.6 read()、readline()、readlines()比较
序号
方法
描述
使用情况
1
read()
一次读取全部文件内容,返回字符串
大数据,占内存,速度最快
2
readline()
一次读取一行,返回字符串
大数据,小内存,速度慢
3
readlines()
一次读取全部文件内容,返回行列表
大数据,占内存,速度居中 1.2.7 for
描述
python文件通过for循环遍历文件行。
示例 >>> f.close() >>> f=open(filepath,"r") >>> for line in f: print(line,end="") name:梯阅线条, des:软件测试开发, url:tyxt.work >>> f.close()1.3 文件存储并解析python对象1.3.1 手动存储和解析
描述
python文件以字符串方式存储python对象,再读取文件内容解析为python对象。
示例 >>> s="梯阅线条" >>> L=[91,92,93] >>> D={"a":1,"b":2,"c":3} # write前转为str >>> f.write(s+" ") 5 >>> f.write(str(L)+" ") 13 >>> f.write(str(D)+" ") 25 >>> f.close() >>> f=open(filepath,"r") >>> txt=f.read() >>> print(txt) 梯阅线条 [91, 92, 93] {"a": 1, "b": 2, "c": 3} >>> f.close() >>> f=open(filepath,"r") >>> line1s=f.readline().rstrip() >>> line1s "梯阅线条" >>> line2L=f.readline() >>> line2L "[91, 92, 93] " # eval执行python表达式或语句,生成对象 >>> line2L=eval(line2L) >>> line2L [91, 92, 93] >>> line3D=f.readline() >>> line3D "{"a": 1, "b": 2, "c": 3} " >>> line3D=eval(line3D) >>> line3D {"a": 1, "b": 2, "c": 3} >>> type(line1s),type(line2L),type(line3D) (, , )1.3.2 pickle模块1.3.2.1 dump()
用法 dump(obj, file, protocol=None)
描述
python的pickle.dump()方法,可以将python的任何对象存储到文件中,dump()后的文件内容可读性差,一般无法识别,也叫序列化对象。
多个对象,就多次调用dump()。
参数
obj:任何python对象;
file:文件对象,需以二进制模式(b)打开;
protocol:0-ASCII协议,1-老式二进制,2-新二进制协议
示例 filepath=r"E:documentsF盘file.pkl" d={"a":1,"b":2} f=open(filepath,"wb") import pickle pickle.dump(d,f) f.close()1.3.2.2 load()
用法 load(file)
描述
python的pickle.load()方法,从file文件对象读取内容,并生成与存储时相同的对象。
参数
file:文件对象,需以二进制模式(b)打开;
示例 import pickle >>> filepath=r"E:documentsF盘file.pkl" >>> d={"a":1,"b":2} >>> l=[91,92] >>> f=open(filepath,"wb") >>> pickle.dump(d,f) >>> pickle.dump(l,f) >>> f.close() >>> f=open(filepath,"rb") >>> data=pickle.load(f) >>> type(data) >>> print(data) {"a": 1, "b": 2} >>> d1=pickle.load(f) >>> type(d1) >>> print(d1) [91, 92] >>> d2=pickle.load(f) Traceback (most recent call last): File "", line 1, in d2=pickle.load(f) EOFError: Ran out of input
版权声明© :
本文首发 微信公众号:梯阅线条 ,
原创不易,转载请注明出处。
更多内容参考python学习笔记或软件测试开发目录。