Python使用with结构打开多个文件
2024-10-19 02:16:16
同时打开三个文件,文件行数一样,要求实现每个文件依次读取一行,然后输出,我们先来看比较容易想到的写法:
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)
最新文章
- npm源切换
- webpack的几个使用方法
- [Android Pro] 告别编译运行 ---- Android Studio 2.0 Preview发布Instant Run功能
- 遇到double 数目过大,转String变成科学计数法
- iOS开发--泛型
- C++Bulder DataSnap 内存泄露元凶
- Linux学习之路:变量值的删除、替代和替换
- PHP与MySQL动态网站开发2
- sys--system-sysdba-sysoper用户区别
- pyqt tabliwdget表头属性修改
- JSP具体条款——response对象
- linq 在查询表达式中处理 null 值
- javascript中如何让类工厂和构造函数变成同一个函数
- MySQL zip版本安装
- python第三天基础之字符编码
- mybatis学习笔记(六) -- maven+spring+mybatis从零开始搭建整合详细过程(下)
- [转]什么是C++虚函数、虚函数的作用和使用方法
- os、os.path模块中关于文件、目录常用的函数使用方法
- bootstrap-validator
- js中进行金额计算 parseFloat 会产生精度问题
热门文章
- HDU.1596 find the safest road (Floyd)
- CentOS安装pip
- UVA796:Critical Links(输出桥)
- 文件上传文件的权限--lnmp 环境配置,尤其整个项目复制过来动~~~
- 【Android】完善Android学习(六:API 4.0)
- 51Nod 1001数组中和等于K的数对
- LightOJ 1326 – Race 第二类Stirling数/
- Item 29 优先考虑类型安全的异构容器
- 【Codeforces542E】Playing on Graph [Bfs][Dfs]
- 【HDU】6012 Lotus and Horticulture (BC#91 T2)