在上一篇文章中,简单介绍了打开文件的方法以及关于读、写、追加的操作,点击此处查看。

在此篇文章中,继续介绍另外一种打开文件的方法和几种同时读写的模式。

一、打开文件方法:with

使用file()或open()打开文件时,最后一定要使用close()方法来关闭文件,为了避免忘记使用,还使用使用with的方法开打开文件,代码如:

with open ('文件名','模式')   as  f:...

其中,f为文件句柄,该打开文件的方式等同于f=open('文件名','模式')

此方法也可以一次打开多个文件,如:

with open ('文件名1','模式')   as  f1,open('文件名2','模式') as f2.....:...

当文件过多时,会导致一行代码过长的情况,因此推荐使用如下写法:

with open ('文件名1','模式')  as  f1,\open ('文件名2','模式')  as  f2:...

我们来使用closed()判断文件是否关闭

#使用open()方法打开,不加入close()
>>> f=open('info.log','r')
>>> print f.closed()
False#使用open()方法打开,加入close()
>>> f=open('info.log','r')
>>> f.close()
>>> print f.closed()
True#使用with打开
>>> with open ('info.log','r'):
>>> print f.closed()                  #注意print一定要与with处于同一个结构层次下
True

二、几种同时读写模式

在python中除了普通打开模式(r、w、a)外,还有几种同时读写的模式,包括:

  r+:读写,可读可写,若文件不存在,报错

  w+:写读,可读可写,创建新文件

  a+:追加和读,可读可追加,若文件不存在,则创建

三、指针

为了便于理解同时读写模式,首先引入指针

有一个文件info.log  文件内容如下:

①获取文件句柄所在的指针tell()

例子:

>>> f=file('info.log','r')
>>> print f.tell()             #获取初始时的指针
>>> print f.readline()         #读取文件第一行
>>> print f.tell()             #获取读完第一行后的指针
>>> f.close()
0                       #第一次指针的位置
aaaa
5                              #第二次指针的位置

②设置文件句柄所在的指针seek() 

例子:

>>> f=file('info.log','r')
>>> print f.tell()
>>> print f.readline()
>>> f.seek(3)             #设置指针位置
>>> print f.tell()
>>> f.close()

四、读写:r+

代码:

#使用r+打开文件时,不用read()
>>> f=open('info.log','r+')
>>> f.seek(5)           #指针指向第二行
>>> print f.tell()
>>> f.write('1111')
>>> print f.tell()
>>> f.close()
5
9

文件结果:

注意:当使用r+打开文件时,如果使用了read(),那么不管指针在哪里,用write()方法时,新增的内容始终在文件结尾,除非在read()后重新指定了指针。如下:

>>> f=open('info.log','r+')
>>> f.readline()          #读取文件第一行内容
>>> print f.tell()
>>> f.write('1111')
>>> print f.tell()
>>> f.close()
5
25

文件结果:

五、写读:w+

>>> f=open('info.log','w+')
>>> print f.read()
>>> f.write('1111\n')
>>> f.write('2222')
>>> print f.tell()
>>> pring f.read()
>>> f.seek(0)
>>> print f.read()
>>> f.close()
#执行结果#由于是w+模式,因此会先覆盖原文件内容,此时内容为空,print f.read()  结果为空
8                    #两次write()后,查看指针位置#此时指针处于文件末尾,pring f.read()的结果为空
11112222             #重新把指针指向文件开头后,再print f.read(),有结果

六、追加读:a+

>>> f=open('info.log','a+')
>>> print f.tell()
>>> print f.read()
>>> f.write('1111')
>>> print f.tell()
>>> print f.read()
>>> f.seek(0)
>>> print f.read()
>>> f.close()
#执行结果
21                              #应为是a+模式打开,指针会指向文件结尾#指针在文件结果,因此print f.read()内容为空
25                              #写入内容后,查看指针位置#写入内容后,指针还是在结尾,因此print f.read()内容还是为空
aaaa                            #重新定位指针后,print f.read()出的内容
bbbb
ccccc
dddd

  

转载于:https://www.cnblogs.com/nizhihong/p/6545686.html

python-文件基本操作(二)相关推荐

  1. Python文件基本操作

    Python文件基本操作 1.文件对象的属性 属性 描述 file.closed 如果文件已被关闭返回true,否则返回false. file.mode 返回被打开文件的访问模式. file.name ...

  2. python文件IO二--序列化和反序列化

    内存中的字典.链表.列表如何保存到文件中? 自定义的类的实例,如何保存到文件中? 又怎么读取才能让他们在内存中再次变成自己对应的类的实例? 这就是序列化和反序列化 一.理解(serialization ...

  3. python文件操作二

    1.常用函数: fileObject.read([size]) size为读取的长度,以byte为单位.如果不指定参数,表示一次性读取全部 内容,以字符串形式返回,并且每一行结尾会有一个"\ ...

  4. Python 文件操作二

    readlines 就像read没有参数时一样,readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素 #coding=utf-8 f = ...

  5. python文件操作的一般步骤_4.1Python文件基本操作

    Python文件基本操作 文件的读写方法有六种:W,R,A,W+,A+,R+ 读模式: # -*-coding:utf-8 -*- __author__ = 'xiaojiaxin' __file_n ...

  6. python诗歌文件格式处理_Python文件基本操作

    Python文件基本操作 文件的读写方法有六种:W,R,A,W+,A+,R+ 读模式:# -*-coding:utf-8 -*-__author__ = 'xiaojiaxin'__file_name ...

  7. python-模块入门二(模块循环导入,区分python文件的两种用途,模块搜索路径,软件开发的目录规范)...

    一.模块的循环导入问题 run.py # import m1 # 第一次导入 m1.py # 错误示范 ''' print('正在导入m1') from m2 import y #第一次导入m2 x= ...

  8. 二、Linux系统目录和文件基本操作

    (一)linux系统目录 1.相对路径 相对与当前系统位置,文件名称的简写,此名称前会自动添加'pwd'命令的输出, 相对路径文件名称前不会出现"/" 2.绝对路径 文件在系统中的 ...

  9. Python标准库文件基本操作以及中文路径问题

    最近在公司写RF自动化测试用例,Web测试,当时写这个的时候,有位大佬给了几个他自己写的例子和基于selenium库写的一些方法,基于Python标准库的一些方法,今天写的时候,翻看大佬写的自建库的一 ...

  10. Python入门(二十三)- 文件操作1

    二十三.文件操作 23.1 文件基础知识 当程序运行时,变量是保存数据的好方法,但变量.序列以及对象中存储的数据是暂时的,程序结束后就会丢失,如果希望程序结束后数据仍然保持,就需要将数据保存到文件中. ...

最新文章

  1. banana pi 板上跑树莓派镜像
  2. Ubuntu下安装OpenGL/Glut库
  3. tee 和 ree分别是什么意思?
  4. 设置vim语法高亮显示和自动缩进
  5. 前端学习(931):三大系列总结
  6. 计算机应用基础重点分析,计算机应用基础整体设计重点分析.doc
  7. 话里话外:流程管理评价的两大要素
  8. Jquery技巧:使用ajax技术提交表单数据
  9. matlab 图片显示函数,matlab图像显示函数
  10. 【vpn异地组网专题】爱快ikuai软路由-VM虚拟机安装教程
  11. 三角波c语言编程,51单片机简易波形发生器(正弦波 锯齿波 三角波)仿真+源程序+电路原理图...
  12. python——sys模块
  13. sqlite附加数据库操作实例
  14. laravel——实现Email形式的邮箱验证注册以及登陆功能
  15. php实现星座查询,php-十二星座查询系统(原创)
  16. PDF如何转换成PPT?教你们几个简单方法
  17. 盘点2013:21款最优秀的开源数据库
  18. 计算机网络--传输层
  19. 如何解决M1芯片安装PS 2021闪退、卡启动界面的问题?
  20. 模拟电子技术实验作业(5)

热门文章

  1. SecureCRT通过密钥进行SSH登录
  2. 西雅图SQL PASS之旅
  3. C#后台获取数据库数据--ADO.NET
  4. java、intellij idea、groovy
  5. [禅悟人生]拿得起放得下, 才是真幸福
  6. Nginx如何反向代理网站和设置虚拟主机
  7. Flash使用域内存api的MD5,速度超快!
  8. Unix编程艺术——Unix哲学
  9. Siri:开启智能语音营销时代
  10. 一键生成表结构说明文档的参考,数据字典生成方式参考