同时打开三个文件,文件行数一样,要求实现每个文件依次读取一行,然后输出,我们先来看比较容易想到的写法:

with open(filename1, 'rb') as f1:
with open(filename2, 'rb') as f2:
with open(filename3, 'rb') 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)

但可使用强大的zip操作:

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

这样层层的嵌套未免啰嗦,with结构支持一种更简洁的写法:

with open(filename1, 'rb') as f1, open(filename2, 'rb') as f2, open(filename3, 'rb') as f3:
for i in f1:
j = f2.readline()
k = f3.readline()
print(i, j, k)

或者使用更为优雅的写法,此时需要contextlib语法糖:

from contextlib improt ExitStack
with ExitStack() as stack:
files = [stack.enter_context(open(fname)) for fname in [filename1, filename2, filename3]]
for i, j, k in zip(files[0], files[1], files[2]):
print(i, j, k)

最新文章

  1. npm源切换
  2. webpack的几个使用方法
  3. [Android Pro] 告别编译运行 ---- Android Studio 2.0 Preview发布Instant Run功能
  4. 遇到double 数目过大,转String变成科学计数法
  5. iOS开发--泛型
  6. C++Bulder DataSnap 内存泄露元凶
  7. Linux学习之路:变量值的删除、替代和替换
  8. PHP与MySQL动态网站开发2
  9. sys--system-sysdba-sysoper用户区别
  10. pyqt tabliwdget表头属性修改
  11. JSP具体条款——response对象
  12. linq 在查询表达式中处理 null 值
  13. javascript中如何让类工厂和构造函数变成同一个函数
  14. MySQL zip版本安装
  15. python第三天基础之字符编码
  16. mybatis学习笔记(六) -- maven+spring+mybatis从零开始搭建整合详细过程(下)
  17. [转]什么是C++虚函数、虚函数的作用和使用方法
  18. os、os.path模块中关于文件、目录常用的函数使用方法
  19. bootstrap-validator
  20. js中进行金额计算 parseFloat 会产生精度问题

热门文章

  1. HDU.1596 find the safest road (Floyd)
  2. CentOS安装pip
  3. UVA796:Critical Links(输出桥)
  4. 文件上传文件的权限--lnmp 环境配置,尤其整个项目复制过来动~~~
  5. 【Android】完善Android学习(六:API 4.0)
  6. 51Nod 1001数组中和等于K的数对
  7. LightOJ 1326 – Race 第二类Stirling数/
  8. Item 29 优先考虑类型安全的异构容器
  9. 【Codeforces542E】Playing on Graph [Bfs][Dfs]
  10. 【HDU】6012 Lotus and Horticulture (BC#91 T2)