Python中文件的读取和写入操作


Posted in Python onApril 27, 2018

从文件中读取数据

读取整个文件

这里假设在当前目录下有一个文件名为'pi_digits.txt'的文本文件,里面的数据如下:

3.1415926535
8979323846
2643383279

with open('pi_digits.txt') as f: # 默认模式为‘r',只读模式
  contents = f.read() # 读取文件全部内容
  print contents # 输出时在最后会多出一行(read()函数到达文件末会返回一个空字符,显示出空字符就是一个空行)
  print '------------'
  print contents.rstrip() # rstrip()函数用于删除字符串末的空白

3.1415926535
8979323846
2643383279
------------
3.1415926535
8979323846
2643383279

逐行读取

可以通过循环来实现逐行读取数据:

with open('pi_digits.txt') as f:
  for line1 in f:
    print line1 # 每行末尾会有一个换行符
  print '------------'
  for line2 in f:
    print line2.rstrip() # 此时文件已经读完,line2指向文本末尾,因此不会有输出

3.1415926535

8979323846

2643383279

------------

读取文件时相当于有一个指针在记录读取的位置,数据读到哪,这个指针就指到哪边,继续读取数据时会从该位置继续读取,因此上面代码中第二个循环中输出为空。将上述代码稍加修改如下:

with open('pi_digits.txt') as f:
  for line1 in f:
    print line1
  print '------------'
with open('pi_digits.txt') as f: # 需要重新打开文本进行读取
  for line2 in f:
    print line2.rstrip() # 删除字符串末尾的空白

3.1415926535

8979323846

2643383279

------------
3.1415926535
8979323846
2643383279

上述代码相当于第一次读取完后关闭该文件又重新打开进行读取。逐行读取数据也可以用readline()函数,如下:

with open('pi_digits.txt') as f: 
  # readline()每一次读取一行数据,并指向该行末尾
  line1 = f.readline() # 读取第一行数据(此时已经指向第一行末尾)
  line2 = f.readline() # 从上一次读取末尾开始读取(第二行)
  print line1.rstrip()
  print line2.rstrip()

3.1415926535
8979323846

有时候我们想要一次性读取全部数据并且按分开存储以便于后续的操作,当然用上面的循环可以实现,但python提供了更简单的方法readlines():

with open('pi_digits.txt') as f: 
  lines = f.readlines() # 读取文本中所有内容,并保存在一个列表中,列表中每一个元素对应一行数据
print lines # 每一行数据都包含了换行符
print '------------'
for line in lines:
  print line.rstrip()  
print '------------'
pi_str = '' # 初始化为空字符
for line in lines:
  pi_str += line.rstrip() #字符串连接
print pi_str

['3.1415926535\n', '8979323846\n', '2643383279\n']
------------
3.1415926535
8979323846
2643383279
------------
3.141592653589793238462643383279

写数据到文件

写数据有几种不同的模式,最常用的是w', ‘a', 分别表示擦除原有数据再写入和将数据写到原数据之后:

filename = 'write_data.txt'
with open(filename,'w') as f: # 如果filename不存在会自动创建, 'w'表示写数据,写之前会清空文件中的原有数据!
  f.write("I am Meringue.\n")
  f.write("I am now studying in NJTECH.\n")

此时会在当前路径下创建一个'write_data.txt'的文本文件,并向文件中写入数据如下:

I am Meringue.
I am now studying in NJTECH.

下面继续在该文件中加入新数据:

with open(filename,'a') as f: # 'a'表示append,即在原来文件内容后继续写数据(不清楚原有数据)
  f.write("I major in Machine learning and Computer vision.\n")

此时的文件内容为:

I am Meringue.
I am now studying in NJTECH.
I major in Machine learning and Computer vision.

总结

以上所述是小编给大家介绍的Python中文件的读取和写入操作,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
itchat和matplotlib的结合使用爬取微信信息的实例
Aug 25 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
Oct 29 Python
Python正则表达式指南 推荐
Oct 09 Python
Python 做曲线拟合和求积分的方法
Dec 29 Python
PyQt5 QTableView设置某一列不可编辑的方法
Jun 25 Python
python django 原生sql 获取数据的例子
Aug 14 Python
python实现通过flask和前端进行数据收发
Aug 22 Python
pytorch 实现cross entropy损失函数计算方式
Jan 02 Python
Python 使用生成器代替线程的方法
Aug 04 Python
python pip如何手动安装二进制包
Sep 30 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
Oct 16 Python
基于python模拟TCP3次握手连接及发送数据
Nov 06 Python
Python针对给定列表中元素进行翻转操作的方法分析
Apr 27 #Python
Python八大常见排序算法定义、实现及时间消耗效率分析
Apr 27 #Python
python读取csv文件并把文件放入一个list中的实例讲解
Apr 27 #Python
python脚本生成caffe train_list.txt的方法
Apr 27 #Python
如何使用Python的Requests包实现模拟登陆
Apr 27 #Python
Python可变参数*args和**kwargs用法实例小结
Apr 27 #Python
python实现对文件中图片生成带标签的txt文件方法
Apr 27 #Python
You might like
杏林同学录(二)
2006/10/09 PHP
PHP+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
2007/02/15 PHP
PHP 反射机制实现动态代理的代码
2008/10/22 PHP
支持中文的php加密解密类代码
2011/11/27 PHP
Yii核心组件AssetManager原理分析
2014/12/02 PHP
php微信开发之图片回复功能
2018/06/14 PHP
JavaScript 指导方针
2007/04/05 Javascript
js 函数的执行环境和作用域链的深入解析
2009/11/01 Javascript
ModelDialog JavaScript模态对话框类代码
2011/04/17 Javascript
客户端js性能优化小技巧整理
2013/11/05 Javascript
Jquery创建层显示标题和内容且随鼠标移动而移动
2014/01/26 Javascript
js使用html()或text()方法获取设置p标签的显示的值
2014/08/01 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
jquery实现图片放大镜功能
2015/11/23 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
2016/08/01 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
Javascript获取background属性中url的值
2016/10/17 Javascript
nodejs操作mongodb的增删改查功能实例
2017/11/09 NodeJs
小程序tab页无法传递参数的方法
2018/08/03 Javascript
angularJs中$scope数据序列化的实例
2018/09/30 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
Vue v-model组件封装(类似弹窗组件)
2020/01/08 Javascript
Python中map和列表推导效率比较实例分析
2015/06/17 Python
python中正则表达式 re.findall 用法
2018/10/23 Python
Python txt文件加入字典并查询的方法
2019/01/15 Python
Python中请不要再用re.compile了
2019/06/30 Python
python验证码图片处理(二值化)
2019/11/01 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
2020/09/26 Python
介绍一下RMI的基本概念
2016/12/17 面试题
考试作弊检讨书大全
2014/02/18 职场文书
离婚协议书怎样才有法律效力
2014/10/10 职场文书
公司离职证明标准格式
2014/11/18 职场文书
后进生评语大全
2015/01/04 职场文书
社会实践活动总结格式
2015/05/11 职场文书
小学运动会入场口号
2015/12/24 职场文书
JavaScript流程控制(分支)
2021/12/06 Javascript