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中pycurl库的用法实例
Sep 30 Python
python访问抓取网页常用命令总结
Apr 11 Python
使用Kivy将python程序打包为apk文件
Jul 29 Python
对Python中for复合语句的使用示例讲解
Nov 01 Python
浅谈Python接口对json串的处理方法
Dec 19 Python
python钉钉机器人运维脚本监控实例
Feb 20 Python
linux环境下Django的安装配置详解
Jul 22 Python
通过python扫描二维码/条形码并打印数据
Nov 14 Python
Python高阶函数、常用内置函数用法实例分析
Dec 26 Python
基于python爬取梨视频实现过程解析
Nov 09 Python
Python调用系统命令os.system()和os.popen()的实现
Dec 31 Python
pytorch MSELoss计算平均的实现方法
May 12 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获取数组最大值下标的方法
2015/05/12 PHP
为指定元素增加样式的js代码
2009/12/09 Javascript
JQuery开发的数独游戏代码
2010/10/29 Javascript
Jquery常用技巧收集整理篇
2010/11/14 Javascript
扩展IE中一些不兼容的方法如contains、startWith等等
2014/01/09 Javascript
JavaScript使用focus()设置焦点失败的解决方法
2014/09/03 Javascript
js实现div弹出层的方法
2014/11/20 Javascript
JavaScript中的console.profile()函数详细介绍
2014/12/29 Javascript
javascript动态修改Li节点值的方法
2015/01/20 Javascript
js拖拽的原型声明和用法总结
2016/04/04 Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
2016/06/21 Javascript
NodeJS实现微信公众号关注后自动回复功能
2017/05/31 NodeJs
Easy UI动态树点击文字实现展开关闭功能
2017/09/30 Javascript
JavaScript数据结构与算法之二叉树添加/删除节点操作示例
2019/03/01 Javascript
小程序实现自定义导航栏适配完美版
2019/04/02 Javascript
微信小程序基于高德地图API实现天气组件(动态效果)
2020/10/22 Javascript
[03:41]DOTA2上海特锦赛小组赛第三日recap精彩回顾
2016/02/28 DOTA
python 生成器协程运算实例
2017/09/04 Python
python 将json数据提取转化为txt的方法
2018/10/26 Python
python虚拟环境迁移方法
2019/01/03 Python
Python中的集合介绍
2019/01/28 Python
python游戏开发之视频转彩色字符动画
2019/04/26 Python
使用python的pyplot绘制函数实例
2020/02/13 Python
Python3连接Mysql8.0遇到的问题及处理步骤
2020/02/17 Python
Windows系统下pycharm中的pip换源
2020/02/23 Python
keras和tensorflow使用fit_generator 批次训练操作
2020/07/03 Python
python 装饰器的实际作用有哪些
2020/09/07 Python
Html5如何唤起百度地图App的方法
2019/01/27 HTML / CSS
中学教师培训制度
2014/01/31 职场文书
数控技术应用个人求职信范文
2014/02/03 职场文书
党员大会主持词
2014/04/02 职场文书
政府法律服务方案
2014/06/14 职场文书
个性车贴标语
2014/06/24 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
HTML5来实现本地文件读取和写入的实现方法
2021/05/25 HTML / CSS
MySQL 时间类型的选择
2021/06/05 MySQL