python中如何对文件进行读写操作

创建和打开文件

在python中想要操作文件需要创建或打开指定的文件并创建文件对象,可以通过内置的open函数来实现。
语法格式通常如下:

 file=open(filename, [mode], [buffering])

file:被创建的文件对象
filename:要创建或打开文件的文件名称,需要用单引号后双引号括起来。如果要打开的文件和当前文件在同一个目录下,那么直接写文件名即可,否则需要指定完整的路径。
mode:可选参数,用于指定文件的打开模式,默认为只读 r
buffering:可选参数,用于指定读写文件的缓冲模式,值为0表示不缓存;值为1表示缓存;值大于1则表示缓冲区的大小。默认为缓存模式。
在这里插入图片描述在这里插入图片描述
注意:
当要打开的文件不存在时,指定mode参数的值为w、w+、a、a+,就可以创建新文件了

二进制形式打开文件

open函数不仅仅可以以文本的形式打开文本文件,而且还可以使用二进制形式可以打开图片、视频、音频等非文本文件。
例如:

file = open('picture.gif', 'rb')
print(file)

执行结果如下:

<_io.BufferedReader name='picture.gif'>

打开文件时指定编码格式

在使用open()函数打开文件时,默认采用GBK编码,当被打开的文件不是GBK编码是,将抛出如下异常:
在这里插入图片描述
要解决该问题有两种方法:
1.直接修改文件的编码
2.在打开文件时,直接指定使用的编码方式
推荐使用第二种方法,即在调用open函数时,通过添加encoding='utf-8’参数即可实现将编码指定为UTF-8,如果所要打开文件为其他编码格式,可将引号中的内容替换成其他指定的编码即可。
例如:

file=open('filename.txt','r',encoding='utf-8')

关闭文件

打开文件后需要及时关闭,以免造成不必要的破坏,关闭文件可以使用文件对象的colse()方法。
语法格式如下:

file.close()

file.closed语句是判断文件是否处于关闭状态,返回布尔类型

使用with语句打开文件

with语句可以保证执行完毕后自动关闭已经打开的文件。
语法格式如下:

with expression as target:
    with-body

expression:用于指定一个表达式,这里可以是打开文件的open()函数
target:用于指定一个变量,并且将expression的结果保存到该变量中
with-body:用于指定with语句体

写入文件内容

python文件对象提供了write()方法,可以向文件中写入内容。
语法格式如下:

file.write(string)

调用write()方法向文件中写入内容的前提是在打开文件时,指定的打开模式为w或a,否则将抛出异常

  • 向文件中写入内容时,打开模式采用w,则会先清空原文件中的内容,再写入新内容
  • 打开模式若为a,则不会覆盖原文件中的内容,只是在文件的结尾处增加新的内容

注意
在写入文件后一定要调用close()方法关闭文件,否则写入的内容不会保存到文件中,如果不关闭文件,也可以调用文件对象提供的flush()方法,把缓冲区的内容写入文件

读取文件

读取指定字符

文件对象提供了read()方法读取指定个数的字符
语法格式如下:

file.read([size])

size:可选参数,如果省略则一次性读取所有的内容
read([size])方法读取文件时,是从文件开头读取的,若想要读取部分内容,可以先使用seek()方法将文件的指针位置移动到新的位置,然后再用read([size])方法读取。
seek()方法的语法格式如下:

file.seek(offset,[whence])

offset:用于指定移动的字符个数,其具体位置与whence参数有关
whence:用于指定从什么位置开始计算,0表示从文件头开始计算,1表示从当前位置开始计算,2表示从文件尾开始计算,默认值为0.
注意:
对于whence参数,如果在打开文件时没有用b模式(即rb),那么只允许从文件头开始计算相对位置

读取一行

在使用read()方法读取文件时,如果文件很大,一次读取全部内容到内存,容易造成内存不足,所以通常采用逐行读取,文件对象提供了readline()方法用于读取每一行数据。
语法格式如下:

file.readline()
读取全部行

读取全部行的作用同调用read()方法时不指定size类似,只不过读取全部行时,返回的是一个字符串列表。
语法格式如下:

file.readlines()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值