17、Python相关-【文件操作】文件读取与文件写入
文章目录
前言
文件的处理包括读文件和写文件,读写文件就是请求操作系统打开一个文件对象,然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。
1.文件读取
-
文件读取可分为以下步骤:
(1)打开文件
(2)读取文件内容
(3)关闭文件
-
打开文件要使用open内建函数:
open(file [, mode='r', encoding=None, errors=None])
参数说明: file:文件路径,可以是相对路径和绝对路径
mode:文件打开模式 encodeing: 文件编码方式,不用于二进制文件,一般是utf-8,gbk
errors:指定如何处理编码和解码错误 ,适用于文本文件
返回值:一个可迭代的文件对象
mode | 解释 |
---|---|
r | 只读 |
w | 只写,写之前会清空文件的内容,如果文件不存在,会创建新文件 |
a | 追加的方式,在原本内容中继续写,如果文件不存在,则会创建新文件 |
r+ | 可读可写 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
b | rb、wb、ab、rb+、wb+、ab+意义和上面一样,用于二进制文件操作 |
注意:二进制文件一般用于视频、音频、图片
读取文件常用函数:
函数 | 解释 |
---|---|
read([size]) | 读取文件(读取size字符,默认读取全部) |
readline([size]) | 读取一行,如果指定size,将读入指定的字符数 |
readlines() | 把文件内容按行全部读入,返回一个包含所有行的列表 |
- 代码示例:
#打开文件
fp = open('qfile.txt','r',encoding='utf-8')
#读取文件全部内容
#content = fp.read()
#print(content)
#读取指定字符数,包括行尾的换行符\n
# print(fp.read(20))
#读取一行
# print(fp.readline(5)) #读取指定字符数
# print(fp.readline()) #读取一整行,直到碰到一个\n
#读取所有行,返回列表
# print(fp.readlines())
#关闭文件
fp.close()
#由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。
# 所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try ... finally来实现:
# try:
# fp = open('qfile.txt','r',encoding='utf-8')
# print(fp.readlines())
# finally:
# fp.close()
#可以简写为:
#with语句会自动调用close方法关闭文件
with open('qfile.txt','r',encoding='utf-8') as fp:
print(fp.readline())
#fread()和freadlines()会一次读入文件全部内容,如果文件太大,会直接耗尽内存的,因为文件对象可迭代,所以可以用for循环遍历文件读取
with open('qfile.txt','r',encoding='utf-8') as fp:
for line in fp:
print(line.strip()) #注意无论是read、readline、readlines都会读入行末的\n,所以需要手动剔除\n
2.文件写入
- 代码示例:
path = "file11.txt"
#1.打开文件
f = open(path,"w",encoding="utf-8")
#2.写入内容,将内容写入到缓冲区
#不会自动换行,需要换行的话,需要在字符串末尾添加换行符
f.write("Whatever is worth doing is worth doing well该行很骄傲很关键\n")
#3.刷新缓冲区【加速数据的流动,保证缓冲区的流畅】
f.flush()
#4.关闭文件 关闭文件也会刷新缓冲区
f.close()
#简写方式:可以不用手动调用close
with open(path,"w",encoding="utf-8") as f1:
f.write("Whatever is worth doing is worth doing well该行很骄傲很关键")
总结
以上是对文件读取与文件写入的讲解!
关注公众号“软件测试技术联盟”,发送“测试资料”,免费获取全栈软件测试视频资料!!!