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 相关文章推荐
Python多进程通信Queue、Pipe、Value、Array实例
Nov 21 Python
python fabric实现远程部署
Jan 05 Python
pandas值替换方法
Jul 10 Python
python3 面向对象__类的内置属性与方法的实例代码
Nov 09 Python
ipad上运行python的方法步骤
Oct 12 Python
python代码中怎么换行
Jun 17 Python
基于django2.2连oracle11g解决版本冲突的问题
Jul 02 Python
基于Python 的语音重采样函数解析
Jul 06 Python
Python是怎样处理json模块的
Jul 16 Python
详解python对象之间的交互
Sep 29 Python
如何用python 操作zookeeper
Dec 28 Python
Python可变与不可变数据和深拷贝与浅拷贝
Apr 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
十天学会php(2)
2006/10/09 PHP
不错的一篇面向对象的PHP开发模式(简写版)
2007/03/15 PHP
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
2011/12/05 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
2013/11/14 PHP
PHP判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
Aster vs Newbee BO5 第三场2.19
2021/03/10 DOTA
高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
2010/06/19 Javascript
流量统计器如何鉴别C#:WebBrowser中伪造referer
2015/01/07 Javascript
JavaScript实现彩虹文字效果的方法
2015/04/16 Javascript
基于jQuery实现表格的查看修改删除
2016/08/01 Javascript
jQuery树形插件jquery.simpleTree.js用法分析
2016/09/05 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
Vue项目中设置背景图片方法
2018/02/21 Javascript
JS实现可针对算术表达式求值的计算器功能示例
2018/09/04 Javascript
如何在 JavaScript 中更好地利用数组
2018/09/27 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
2018/11/30 Javascript
js实现无缝滚动双图切换效果
2019/07/09 Javascript
JavaScript在web自动化测试中的作用示例详解
2019/08/25 Javascript
vue 开发之路由配置方法详解
2019/12/02 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
2020/09/10 Javascript
零基础写python爬虫之抓取糗事百科代码分享
2014/11/06 Python
Python实现简单多线程任务队列
2016/02/27 Python
Python使用遗传算法解决最大流问题
2018/01/29 Python
Python接口自动化判断元素原理解析
2020/02/24 Python
ipython jupyter notebook中显示图像和数学公式实例
2020/04/15 Python
HTML5 中新的全局属性(整理)
2013/07/31 HTML / CSS
如何让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度
2019/08/01 HTML / CSS
泰国在线书店:SE-ED
2020/06/21 全球购物
会计实习期自我鉴定
2013/10/06 职场文书
民主评议政风行风整改方案
2014/09/17 职场文书
法定代表人身份证明书(含说明)
2014/10/02 职场文书
体育运动会广播稿
2014/10/05 职场文书
服务员岗位职责
2015/02/03 职场文书
鸡毛信观后感
2015/06/11 职场文书
给原生html中添加水印遮罩层的实现示例
2021/04/02 Javascript
德劲DE1102数字调谐收音机机评
2022/04/07 无线电