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原始套接字编程示例分享
Feb 21 Python
python实现二分查找算法
Sep 21 Python
Python3使用正则表达式爬取内涵段子示例
Apr 22 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
Jun 11 Python
对Python协程之异步同步的区别详解
Feb 19 Python
python flask 如何修改默认端口号的方法步骤
Jul 12 Python
python numpy生成等差数列、等比数列的实例
Feb 25 Python
安装python依赖包psycopg2来调用postgresql的操作
Jan 01 Python
Python字节单位转换(将字节转换为K M G T)
Mar 02 Python
pycharm配置安装autopep8自动规范代码的实现
Mar 02 Python
PyQt5实现多张图片显示并滚动
Jun 11 Python
Python pandas读取CSV文件的注意事项(适合新手)
Jun 20 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/27 PHP
几款极品的javascript压缩混淆工具
2007/05/16 Javascript
使用Mootools动态添加Css样式表代码,兼容各浏览器
2011/12/12 Javascript
简单的Jquery遮罩层代码实例
2013/11/14 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
2014/06/26 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
基于JavaScript如何制作遮罩层对话框
2016/01/26 Javascript
jQuery绑定自定义事件的魔法升级版
2016/06/30 Javascript
Web前端框架bootstrap实战【第一次接触使用】
2016/12/28 Javascript
5种JavaScript脚本加载的方式
2017/01/16 Javascript
JavaScript结合HTML DOM实现联动菜单
2017/04/05 Javascript
微信小程序实现时间预约功能
2018/11/27 Javascript
如何利用ES6进行Promise封装总结
2019/02/11 Javascript
JavaScript+HTML5 canvas实现放大镜效果完整示例
2019/05/15 Javascript
小程序实现横向滑动日历效果
2019/10/21 Javascript
js瀑布流布局的实现
2020/06/28 Javascript
Python求解平方根的方法
2015/03/11 Python
Python中的高级函数map/reduce使用实例
2015/04/13 Python
Python在Console下显示文本进度条的方法
2016/02/14 Python
Python字典中的键映射多个值的方法(列表或者集合)
2018/10/17 Python
python如何查看微信消息撤回
2018/11/27 Python
python实现函数极小值
2019/07/10 Python
解决python flask中config配置管理的问题
2019/07/26 Python
Html5页面点击遮罩层背景关闭遮罩层
2020/11/30 HTML / CSS
GAP欧盟网上商店:GAP EU
2016/09/13 全球购物
一站式跨境收款解决方案:Payoneer(派安盈)
2018/09/06 全球购物
美国婚礼礼品网站:MyWeddingFavors
2018/09/26 全球购物
英国鲜花递送:Blossoming Gifts
2020/07/10 全球购物
常用UNIX 命令(Linux的常用命令)
2015/12/26 面试题
中学生秋季运动会广播稿
2014/09/21 职场文书
个人剖析材料及整改措施
2014/10/07 职场文书
环卫工作汇报材料
2014/10/28 职场文书
2015年度员工自我评价范文
2015/03/11 职场文书
Python Django搭建文件下载服务器的实现
2021/05/10 Python
python 算法题——快乐数的多种解法
2021/05/27 Python
SQLServer常见数学函数梳理总结
2022/08/05 MySQL