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:\documents\F盘\file.txt'
# r,不存在报错
>>> f=open(filepath,'r')
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
f=open(filepath,'r')
FileNotFoundError: [Errno 2] No such file or directory: 'E:\\documents\\F盘\\file.txt'
# w,不存在创建
>>> f=open(filepath,'w')
>>> filepath1=r'E:\documents\F盘\file1.txt'
# r,不存在报错
>>> f1=open(filepath1,'r')
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
f1=open(filepath1,'r')
FileNotFoundError: [Errno 2] No such file or directory: 'E:\\documents\\F盘\\file1.txt'
# a,不存在创建
>>> f1=open(filepath1,'a')
1.2 文件操作
1.2.1 close()
描述
python文件的close()方法,用于关闭文件对象,关闭后不可调用file对象方法。
示例
>>> filepath=r'E:\documents\F盘\file.txt'
>>> f=open(filepath,'r')
>>> f.readline()
'name:梯阅线条,\n'
>>> f.close()
# close()后,不可调用file方法
>>> f.readline()
Traceback (most recent call last):
File "<pyshell#26>", line 1, in <module>
f.readline()
ValueError: I/O operation on closed file.
1.2.2 write()
用法
write(text)
描述
python文件的write()方法,将字符串写入到文件,返回字符串长度。
参数
text:字符串
出参
返回字符串长度
示例
>>> filepath=r'E:\documents\F盘\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:梯阅线条,\n'
>>> 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:梯阅线条,\n'
>>> f.close()
1.2.5 readlines()
用法
readlines()
描述
python文件的readlines()方法,一次读取全部行。
参数
略
出参
返回行列表。
示例
>>> f=open(filepath,'r')
>>> txtlist=f.readlines()
>>> txtlist
['name:梯阅线条,\n', 'des:软件测试开发,\n', 'url:tyxt.work\n']
>>> 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+'\n')
5
>>> f.write(str(L)+'\n')
13
>>> f.write(str(D)+'\n')
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]\n'
# eval执行python表达式或语句,生成对象
>>> line2L=eval(line2L)
>>> line2L
[91, 92, 93]
>>> line3D=f.readline()
>>> line3D
"{'a': 1, 'b': 2, 'c': 3}\n"
>>> line3D=eval(line3D)
>>> line3D
{'a': 1, 'b': 2, 'c': 3}
>>> type(line1s),type(line2L),type(line3D)
(<class 'str'>, <class 'list'>, <class 'dict'>)
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:\documents\F盘\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:\documents\F盘\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)
<class 'dict'>
>>> print(data)
{'a': 1, 'b': 2}
>>> d1=pickle.load(f)
>>> type(d1)
<class 'list'>
>>> print(d1)
[91, 92]
>>> d2=pickle.load(f)
Traceback (most recent call last):
File "<pyshell#41>", line 1, in <module>
d2=pickle.load(f)
EOFError: Ran out of input
版权声明?:
本文首发微信公众号:梯阅线条,
原创不易,转载请注明出处。
更多内容参考python学习笔记或软件测试开发目录。