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 Trie树实现字典排序
Mar 28 Python
在Python下使用Txt2Html实现网页过滤代理的教程
Apr 11 Python
Python中map和列表推导效率比较实例分析
Jun 17 Python
python中利用队列asyncio.Queue进行通讯详解
Sep 10 Python
PyCharm 常用快捷键和设置方法
Dec 20 Python
如何在python中使用selenium的示例
Dec 26 Python
Python实现KNN邻近算法
Jan 28 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
Jan 23 Python
Python数据分析之双色球统计单个红和蓝球哪个比例高的方法
Feb 03 Python
Python修改列表值问题解决方案
Mar 06 Python
python中数字是否为可变类型
Jul 08 Python
Python hashlib模块的使用示例
Oct 09 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
全国FM电台频率大全 - 18 湖南省
2020/03/11 无线电
BBS(php & mysql)完整版(二)
2006/10/09 PHP
解析php 版获取重定向后的地址(代码)
2013/06/26 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
php文件上传及下载附带显示文件及目录功能
2017/04/27 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
event.keyCode键码值表 附只能输入特定的字符串代码
2009/05/15 Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
2013/03/15 Javascript
深入理解JavaScript中的传值与传引用
2013/12/09 Javascript
js 获取、清空input type="file"的值(示例代码)
2013/12/24 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
2015/09/23 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
2016/08/01 Javascript
设置jquery UI 控件的大小方法
2016/12/12 Javascript
很棒的一组js图片轮播特效
2017/01/12 Javascript
js实现鼠标拖拽多选功能示例
2017/08/01 Javascript
你可能不知道的前端算法之文字避让(inMap)
2018/01/12 Javascript
Vue实现购物车实例代码两则
2020/05/30 Javascript
JS如何操作DOM基于表格动态展示数据
2020/10/15 Javascript
[01:32]2016国际邀请赛中国区预选赛IG战队首日赛后采访
2016/06/27 DOTA
python根据距离和时长计算配速示例
2014/02/16 Python
python数据处理实战(必看篇)
2017/06/11 Python
python求解数组中两个字符串的最小距离
2018/09/27 Python
python numpy元素的区间查找方法
2018/11/14 Python
flask-restful使用总结
2018/12/04 Python
Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析
2019/09/20 Python
通过实例简单了解python yield使用方法
2020/08/06 Python
Expected conditions模块使用方法汇总代码解析
2020/08/13 Python
美国知名保健品网站:LuckyVitamin(支持中文)
2017/08/09 全球购物
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
俄罗斯三星品牌商店:Samsungstore
2020/04/05 全球购物
英国领先的高级美容和在线皮肤诊所:Face the Future
2020/06/17 全球购物
某IT外企面试题-二分法求方程!看看大家的C++功底
2015/07/04 面试题
财务情况说明书范文
2014/05/06 职场文书
乡镇干部个人对照检查材料(群众路线)
2014/09/26 职场文书
开学典礼致辞
2015/07/29 职场文书
解决SpringBoot跨域的三种方式
2021/06/26 Java/Android