同时读取两个文件进行while循环
知识点:文件对象提供了三个“读”方法: .read()、.readline() 和 .readlines()。每种方法可以接受一个变量以限制每次读取的数据量,但它们通常不使用变量。
问题描述:
我们的设想是想是:当文件读取第一行的时候,读取文件二的所有行数进行打印;读取第二行的时候,读取文件二的所有行数进行打印,以此类推,得到的结果应该是文件一有X行,文件二有Y行,打印总行数为X+(X*Y)
文件1 文件2
a x
b y
|
错误代码: file1=open('1','r') line1=file1.readline() line2=file2.readline() while line1: print line2 line1=file1.readline() file2.close file1.close |
代码解释: 同时读取两个文件并且读取文件的首行分别赋给line1和line2;line1=a;line2=x 当进入第一个while循环的时候,读取第一个文件的第一行line1,此时line1的值是a并进行打印a; 进而执行第二个while循环,读取line2的值,此时line2的值是x并进行打印出x,继续执行下一条,循环读取文件的第二行,赋给line2=y; 并继续执行第二个while循环,继续进行打印line2的值,打印出y,然后继续读取下一行,发现为空的时候,跳出第二个循环; 执行第一个while循环,继续读取文件1的下一行内容,赋值给line1=b,继续执行第一个while循环,打印line1的值, 执行到第二个while的时候,发现里面的值为空了,不会在进入第二个while循环,继续循环下面的指令。 关闭两个文件 执行的结果: a x y b |
|
正确代码: file1=open('1','r') file2.close |
代码解释: 读取第一个文件,并且读取文件的首行,赋给line1,line1=a 执行第一个while循环,读取line1,并打印line1的值a,然后打开文件2,并读取文件2的首行赋给line2; 进而执行第二个while循环,读取line2,并打印line2的值x,然后继续读取文件2的下一行,赋给line2,继续执行第二个while循环,打印出line2的值:y, 继续读取文件2的下一行内容,发现为空,跳出第二个while循环; 继续执行下一跳语句,读取文件1的下一行内容赋给line1,line1=b,继续执行第一个while循环,打印line1的值,b, 然后打开第二个文件,继续第二个个循环的操作,此时文件重新被打开,从头开始读取, 继续执行“打开文件2,并读取文件2的首行赋给line2;进而执行第二个while循环,读取line2,并打印line2的值x,然后继续读取文件2的下一行, 赋给line2,继续执行第二个while循环,打印出line2的值:y,继续读取文件2的下一行内容,发现为空,跳出第二个while循环” 当发现第一个文件读取的行数为空时,跳出第一个while循环,并且关闭两个文件。 执行结果 a ---| x | 第一次循环 y ---| b ---| y ---| |
从上面的对比可以看出,第一次代码,把第二个while循环后,没有及时的让文件回到首行,才造成了,第二个循环的时候没有办法进入到第二个while循环里面
网上说也可以用seek进行回到首行,但是我执行的时候会提示“AttributeError: 'str' object has no attribute 'seek'” 类型错误
不知道重复读取文件会不会造成什么后果,我把file2.close提前到,当执行完第二个while的时候,就把文件2关闭
希望大虾不吝赐教,其中有问题麻烦指出,谢谢
同时读取两个文件进行while循环的更多相关文章
- python读取两个文件并且判断是否一致
''' 判断两个文件是否相同,如果不同请指出第几行不相同 ''' def f1vsf2(name1,name2): f1 = open(name1) f2 = open(name2) count = ...
- python 合并两个文件并将合并内容保存在另一个文件中
简单地文件合并方法 思路如下: 分别读取两个文件中的内容,并将其保存在一个列表中,将列表通过join()函数转为字符,并将新字符保存在新的文件中. 其中,test1.txt中的内容为: test2.t ...
- matlab中读取txt数据文件(txt文本文档)
matlab中读取txt数据文件(txt文本文档) 根据txt文档不同种类介绍不同的读取数据方法 一.纯数据文件(没有字母和中文,纯数字) 对于这种txt文档,从matalb中读取就简单多了 例如te ...
- Python读取和处理文件后缀为".sqlite"的数据文件
最近在弄一个项目分析的时候,看到有一个后缀为”.sqlite”的数据文件,由于以前没怎么接触过,就想着怎么用python来打开并进行数据分析与处理,于是稍微研究了一下. SQLite是一款非常流行的关 ...
- Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数 linecache模块
Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数 linecache模块 目录 Pycharm使用技巧( ...
- Shell 命令行求两个文件每行对比的相同内容
Shell 命令行求两个文件每行对比的相同内容 遇到的一个实际问题是,2017年08月01日起,所有未经实名的域名,全部停止解析.而我手上有不少域名,其中很多都是没有实名的.但我不知道哪些实名了,哪些 ...
- .NET Core的文件系统[1]:读取并监控文件的变化
ASP.NET Core 具有很多针对文件读取的应用.比如我们倾向于采用JSON文件来定义配置,所以应用就会涉及针对配置文件读取.如果用户发送一个针对物理文件的HTTP请求,应用会根据指定的路径读取目 ...
- matlab 连续读取多个文件
方法1: 把文件的文件名按一定的规律命名,假如:filename1.txt,filename2.txt,...,fielname100.txt,在读取的时候则可以使用循环: for i = 1:100 ...
- 两个文件去重的N种姿势
最近利用shell帮公司优化挖掘关键词的流程,用shell替代了多个环节的操作,极大提高了工作效率. shell在文本处理上确有极大优势,比如多文本合并.去重等,但是最近遇到了一个难搞的问题,即两个大 ...
随机推荐
- 如何搭建属于自己的Web服务器
如今随着计算机和互联网技术的发展,上网现在已经不再是什么难事,打开浏览器,我们可以访问各种论坛站点,比如CSDN.博客园等,各种视频网站,例如爱奇艺,B站等.在网上我们可以写文章,看视频,购物,打游戏 ...
- 2.java容器的设计模式
目录 1.collection接口中的迭代器模式 2.迭代器模式 1.collection接口中的迭代器模式 迭代器分析: Iterator接口有hasNext().next(),remove()三个 ...
- Feign整合Ribbon和Hystrix源码解析
在上篇文章Feign自动装配中,我们提到了Feign的自动装配的原理,以及Feign整合Ribbon和Hystrix的核心在类FeignClientFactoryBean中,那么本篇文章就来揭开这个类 ...
- BayaiM__MYSQL千万级数据量的优化方法积累__初级菜鸟
-----------------------------------------------------------------------------———————-------------- ...
- DHCP服务基本搭建
DHCP原理 DHCP租约四部曲: A:客户端进行IP请求 当一个DHCP客户机启动时,会自动将自己的IP地址配置成0.0.0.0,由于使用0.0.0.0不能进行正常通信,所以客户机就必须通过DHCP ...
- sudo apt-get 与 yum 常用命令
yum -RedHat:CentOS... -xxx.rpmsudo apt-get -Debian:Ubuntu... -xxx.deb 安装工具rpm -ivh yum-2.0.4-1.rh ...
- C++ 标准库 std::remove
参见:https://zh.cppreference.com/w/cpp/algorithm/remove std::remove 不会改变输入vector / string 的长度.其过程,相当于去 ...
- python将xml文件数据增强(labelimg)
在处理faster-rcnn和yolo时笔者使用labelimg标注图片 但是我们只截取了大概800张左右的图,这个量级在训练时肯定是不够的,所以我们需要使用数据增强(无非是旋转加噪调量度)来增加我们 ...
- MDK编译优化笔记
在一次使用MDk的编译优化等级比较高的时候发现编译不优化时功能正常,开了优化等级02就出现异常,调试中看了很多博客总结一下. 一个变量,如果你的主程序要用到,同时中断还要用到,要加volatile修饰 ...
- luoguP2852 [USACO06DEC]Milk Patterns
题意 显然如果有一个子串出现过\(k\)次,那么它必定是一个至少长为k的后缀序的\(LCP\),求出所有相邻的长为\(k-1\)的\(height\)数组的最小值,在其中取最大值即可 code: #i ...