在python中使用with打开多个文件的方法


Posted in Python onJanuary 07, 2019

虽然初恋是java, 可是最近是越来越喜欢python, 所以决定追根溯源好好了解下python的原理,架构等等.小脑袋瓜不太好使,只能记录下慢慢进步吧

使用with打开文件的好处不多说,这里记录一下如果要打开多个文件,该怎么书写简捷的代码。

场景是同时打开三个文件,文件行数一样,程序实现每个文件依次读取一行,同时输出。 首先来一种比较容易想到的写法,如下一样嵌套:

with open('file1') as f1:
 with open('file2') as f2:
  with open('file3') as f3:
   for i in f1:
    j = f2.readline()
    k = f3.readline()
    print(i,j,k)

注意,这里只能对一个文件进行for循环读取,不能写成:

for i,j,k in f1,f2,f3:
 print(i,j,k)

这么多层缩进太恶心了,还是来一种简洁些的写法:

with open('file1') as f1, open('file2') as f2, open('file3') as f3:
 for i in f1:
  j = f2.readline()
  k = f3.readline()
  print(i,j,k)

还有一种优雅一点的写法:

from contextlib import nested #这个包是python2中的,不使用python3
with nested(open('file1'), open('file2'), open('file3')) as (f1,f2,f3):
 for i in f1:
  j = f2.readline()
  k = f3.readline()
  print(i,j,k) 

以上这篇在python中使用with打开多个文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的字典和列表的使用中一些需要注意的地方
Apr 24 Python
python使用正则表达式匹配字符串开头并打印示例
Jan 11 Python
解决python使用open打开文件中文乱码的问题
Dec 29 Python
Python浅复制中对象生存周期实例分析
Apr 02 Python
pandas取出重复数据的方法
Jul 04 Python
python中bytes和str类型的区别
Oct 21 Python
解决Tensorflow占用GPU显存问题
Feb 03 Python
SpringBoot实现登录注册常见问题解决方案
Mar 04 Python
在python下实现word2vec词向量训练与加载实例
Jun 09 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
Jan 29 Python
python内置进制转换函数的操作
Jun 02 Python
pandas数值排序的实现实例
Jul 25 Python
python读取文件名并改名字的实例
Jan 07 #Python
Python 调用 zabbix api的方法示例
Jan 06 #Python
使用Django2快速开发Web项目的详细步骤
Jan 06 #Python
利用Django提供的ModelForm增删改数据的方法
Jan 06 #Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
Jan 05 #Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
Jan 05 #Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
Jan 05 #Python
You might like
珊瑚虫IP库浅析
2007/02/15 PHP
PHP命名空间(namespace)的动态访问及使用技巧
2014/08/18 PHP
9个比较实用的php代码片段
2016/03/15 PHP
Netbeans 8.2与PHP相关的新特性介绍
2016/10/08 PHP
PHP实现上传图片到 zimg 服务器
2016/10/19 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
2016/12/24 PHP
Redis在Laravel项目中的应用实例详解
2017/08/11 PHP
JavaScript设置FieldSet展开与收缩
2009/05/15 Javascript
jquery 表单下所有元素的隐藏
2009/07/25 Javascript
javascript数组去重3种方法的性能测试与比较
2013/03/26 Javascript
用JS将搜索的关键字高亮显示实现代码
2013/11/08 Javascript
利用javascript数组长度循环数组内所有元素
2013/12/27 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
2016/08/05 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
详解vue的数据binding绑定原理
2017/04/12 Javascript
荐书|您有一份JavaScript书单待签收
2017/07/21 Javascript
WdatePicker.js时间日期插件的使用方法
2017/07/26 Javascript
Vue单页应用引用单独的样式文件的两种方式
2018/03/30 Javascript
ES6 Generator函数的应用实例分析
2019/06/26 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
2019/08/28 Javascript
Ant Design Pro 之 ProTable使用操作
2020/10/31 Javascript
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
Python 登录网站详解及实例
2017/04/11 Python
python3实现跳一跳点击跳跃
2018/01/08 Python
Pycharm如何打断点的方法步骤
2019/06/13 Python
详解三种方式实现平滑滚动页面到顶部的功能
2019/04/23 HTML / CSS
商务助理岗位职责
2013/11/13 职场文书
查环查孕证明
2014/01/10 职场文书
公务员保密承诺书
2014/03/27 职场文书
龙潭大峡谷导游词
2015/02/10 职场文书
全国爱眼日活动总结
2015/02/27 职场文书
2015年学校管理工作总结
2015/07/20 职场文书
Java面试题冲刺第十八天--Spring框架3
2021/08/07 面试题
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
2022/06/14 MySQL
vue el-table实现递归嵌套的示例代码
2022/08/14 Vue.js