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)
21

1.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学习笔记或软件测试开发目录。

展开阅读全文

页面更新:2024-05-01

标签:对象   文件   方法   示例   字符串   线条   字符   参数   测试   内容

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top