Python编程中的文件读写及相关的文件对象方法讲解


Posted in Python onJanuary 19, 2016

python文件读写

python 进行文件读写的内建函数是open或file

file_hander(文件句柄或者叫做对象)= open(filename,mode)

mode:

模式    说明

r        只读

r+      读写

w       写入,先删除源文件,在重新写入,如果文件没有则创建

w+     读写,先删除源文件,在重新写入,如果文件没有则创建(可以写入写出)

读文件:

>>> fo = open("/root/a.txt")
>>> fo
<open file '/root/a.txt', mode 'r' at 0x7f5095dec4e0>
>>> fo.read()
'hello davehe\ni am emily\nemily emily\n'
>>> fo.close()
>>> fo.read()                     #对象已关闭,在读取就读不到
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
ValueError: I/O operation on closed file

 

>>> f1 = file("/root/a.txt")         
>>> f1.read()
'hello davehe\ni am emily\nemily emily\n'
>>> f1.close()

写文件:

root@10.1.6.200:~# ls -l new.txt
ls: cannot access new.txt: No such file or directory
>>> fnew = open("/root/new.txt",'w')  w参数文件没有则创建
>>> fnew.write('hello \n i am dave')

这时查看文件数据其实还只是在缓存区中,没有真正落到文件上.

root@10.1.6.200:~# cat new.txt 
root@10.1.6.200:~#

只要我把文件关闭,数据会从缓存区写到文件里

>>> fnew.close()
root@10.1.6.200:~# cat new.txt
hello 
i am dave

再次使用w参数,文件会被清空,所以用该参数需要谨慎.

>>> fnew = open("/root/new.txt","w")
root@10.1.6.200:~# cat new.txt 
root@10.1.6.200:~#

mode使用r+参数:

>>> fnew = open("/root/new.txt",'r+')
>>> fnew.read()
'hello dave'
>>> fnew.write('i am dave')
>>> fnew.close()
root@10.1.6.200:~# cat new.txt
hello davei am dave

这次打开文件,直接写入,会发现ooo替换开头字母,因为上面读取操作使用了指针在写就写在后面.而这次是直接从头写入.

>>> fnew = open("/root/new.txt",'r+')
>>> fnew.write('ooo')
>>> fnew.close()
root@10.1.6.200:~# cat new.txt
ooolo davei am dave

文件对象方法
下面文件对象方法

  • FileObject.close()
  • String=FileObject.readline([size])
  • List = FileObject.readlines([size])
  • String = FileObject.read([size])   read:读取所有数据
  • FileObject.next()          
  • FileObject.write(string)
  • FileObject.writelines(List)
  • FlieObject.seek(偏移量,选项)
  • FlieObject.flush() 提交更新
>>> for i in open("/root/a.txt"):  用open可以返回迭代类型的变量,可以逐行读取数据
...   print i
...
hello davehe
i am emily
emily emily

FileObject.readline: 每次读取文件的一行,size是指每行每次读取size个字节,直到行的末尾,超出范围会读取空字符串

>>> f1 = open("/root/a.txt")
>>> f1.readline()
'hello davehe\n'
>>> f1.readline()
'i am emily\n'
>>> f1.readline()
'emily emily\n'
>>> f1.readline()
''
>>> f1.readline()
''
>>>f1.close()

 FileObject.readlines:返回一个列表

>>> f1 = open("/root/a.txt")
>>> f1.readlines()
['hello davehe\n', 'i am emily\n', 'emily emily\n']''

FileObject.next:返回当前行,并将文件指针到下一行,超出范围会给予警示,停止迭代.

>>> f1 = open("/root/a.txt")
>>> f1.next()
'hello davehe\n'
>>> f1.next()
'i am emily\n'
>>> f1.next()
'emily emily\n'
>>> f1.next()
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
StopIteration

FileObject.write:write和后面writelines在写入前会是否清除文件中原来所有的数据,在重新写入新的内容,取决于打开文件的模式.

FileObject.writelines(List):多行写,效率比write高,速度更快,少量写入可以使用write

>>> l = ["python\n","python\n","python\n"]
>>> f1 = open('/root/a.txt','a')
>>> f1.writelines(l)
>>> f1.close()
root@10.1.6.200:~# cat a.txt
hello davehe
i am emily
emily emily
python
python
python

FlieObject.seek(偏移量,选项):可以在文件中移动文件指针到不同的位置.

位置的默认值为0,代表从文件开头算起(即绝对偏移量),1代表从当前位置算起,2代表从文件末尾算起.

>>> f1 = open('/root/a.txt','r+')
>>> f1.read()
'hello davehe\ni am emily\nemily emily\npython\npython\npython\n'
>>> f1.seek(0,0)   指针指到开头,在读
>>> f1.read()
'hello davehe\ni am emily\nemily emily\npython\npython\npython\n'
>>> f1.read()
''
>>> f1.seek(0,0)
>>> f1.seek(0,2)   指针指到末尾,在读
>>> f1.read()
''

下面看个小实例,查找a.txt中emily出现几次

root@10.1.6.200:~# vim file.py
#!/usr/bin/env python
import re
f1 = open('/root/a.txt')
count = 0
for s in f1.readlines():
  li = re.findall("emily",s)
  if len(li) > 0:
    count = count + len(li)
print "this is have %d emily" % count 
f1.close()
root@10.1.6.200:~# cat a.txt
hello davehe
i am emily
emily emily
root@10.1.6.200:~# python file.py
this is have 3 emily
Python 相关文章推荐
python获取远程图片大小和尺寸的方法
Mar 26 Python
利用Python开发微信支付的注意事项
Aug 19 Python
利用Hyperic调用Python实现进程守护
Jan 02 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
Mar 13 Python
python 移除字符串尾部的数字方法
Jul 17 Python
Python BS4库的安装与使用详解
Aug 08 Python
Python 创建新文件时避免覆盖已有的同名文件的解决方法
Nov 16 Python
详解PyTorch手写数字识别(MNIST数据集)
Aug 16 Python
python小项目之五子棋游戏
Dec 26 Python
python 计算方位角实例(根据两点的坐标计算)
Jan 17 Python
使用Pycharm分段执行代码
Apr 15 Python
Python 如何实现访问者模式
Jul 28 Python
Python使用os模块和fileinput模块来操作文件目录
Jan 19 #Python
举例讲解Python面相对象编程中对象的属性与类的方法
Jan 19 #Python
python结合API实现即时天气信息
Jan 19 #Python
Python+django实现文件下载
Jan 17 #Python
Python+django实现文件上传
Jan 17 #Python
初步剖析C语言编程中的结构体
Jan 16 #Python
举例讲解Python设计模式编程的代理模式与抽象工厂模式
Jan 16 #Python
You might like
检查php文件中是否含有bom的函数
2012/05/31 PHP
PHP JS Ip地址及域名格式检测代码
2013/09/27 PHP
PHP使用Session实现上传进度功能详解
2019/08/06 PHP
php链式操作的实现方式分析
2019/08/12 PHP
JavaScript几种形式的树结构菜单
2010/05/10 Javascript
this和执行上下文实现代码
2010/07/01 Javascript
JQuery解析HTML、JSON和XML实例详解
2014/03/29 Javascript
JavaScript中5种调用函数的方法
2015/03/12 Javascript
jquery 属性选择器(匹配具有指定属性的元素)
2016/09/06 Javascript
AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】
2016/11/03 Javascript
jquery插件bootstrapValidator表单验证详解
2016/12/15 Javascript
JavaScript canvas实现围绕旋转动画
2017/11/18 Javascript
jQuery实现所有验证通过方可提交的表单验证
2017/11/21 jQuery
angular.js实现列表orderby排序的方法
2018/10/02 Javascript
Vue的Options用法说明
2020/08/14 Javascript
jQuery实现日历效果
2020/09/11 jQuery
python计算方程式根的方法
2015/05/07 Python
python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法
2015/05/15 Python
利用Python批量生成任意尺寸的图片
2016/08/29 Python
Python绑定方法与非绑定方法详解
2017/08/18 Python
Python:Scrapy框架中Item Pipeline组件使用详解
2017/12/27 Python
Python numpy多维数组实现原理详解
2020/03/10 Python
使用PyCharm官方中文语言包汉化PyCharm
2020/11/18 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
2021/02/25 Python
Python  Asyncio模块实现的生产消费者模型的方法
2021/03/01 Python
Bally巴利英国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/07 全球购物
西班牙最大的在线滑板和街头服饰商店:Fillow.net
2019/04/15 全球购物
什么是事务?事务有哪些性质?
2012/03/11 面试题
敏捷开发的主要原则都有哪些
2015/04/26 面试题
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
2013/07/06 面试题
函授毕业个人自我评价
2014/02/20 职场文书
绿色学校实施方案
2014/03/31 职场文书
国贸专业求职信
2014/06/28 职场文书
八年级英语教学反思
2016/02/15 职场文书
python 实现mysql自动增删分区的方法
2021/04/01 Python
Python学习之包与模块详解
2022/03/19 Python