python文件读写操作


读写文件是最常见的IO操作,python内置了读写文件的函数,用法和c是兼容的。


在磁盘上读写文件的功能都是由操作系统提供的,现在操作系统不允许普通的程序直接操作磁盘;所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符);然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。


首先介绍读文本文件:


(1)要以读文件的模式打开一个文件对象,使用python内置的open()函数,传入文件名和标识符:


标识符‘r’表示读,这样,我们就成功地打开了一个文件。


(2)如果读取的文件不存在,则open()函数就会抛出一个IOError的错误,并且给出错误码和详细的信息告诉我们文件不存在:



(3)如果文件打开成功,接下来调用read()方法可以一次读取文件的全部内容,python把内容读到内存,用一个str对象表示:



(4)最后一步是调用close()方法关闭文件。文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的。




(5)如果在读写文件是发生了IOError,,则后面的f.close()就不会调用。就比如说文件都没打开,如何关闭呢?


但是为了程序的健壮性,所以无论是否出错都正确关闭文件,我们可以使用try…finally来实现:


文件打开正确时使用try…finally:




文件打开错误时,使用try…finally:



我们在这个步骤就可以看到文件没有打开,因此找不到f这个文件的存在。



(6)每次都使用try…finally,还是有点麻烦的。所以在python可以引用with语句来自动调用close()方法,这样的话,每次在打开文件时,就不需要写f.close()。


正确打开文件时:



不存在文件,或者文件打开错误时:



我们发现(6)得出的结果跟(5)得出的结果是一致的。并且代码还更简洁一些。



下面介绍读二进制文件:


比如图片、制品等,用‘rb’模式打开文件即可:




下面介绍写文件操作:


(1)写文件和读文件是一样的,唯一的区别是调用open()函数时,传入标识符‘w’或者‘wb’表示写文本文件或写二进制文件:



由此可见,我们已经对hello.txt文件写入了“hello,liangyuan”的内容,也对此文件进行了读操作。


(2)如果反复调用write()来写文件,一定要调用f.close()来关闭文件。


当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。


只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。如果忘记调用close(),则后果就是一部分数据丢失。


所以我们还是用with语句来写比较保险:




以上是python进行文件的读写操作。












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值