同时读取两个文件进行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关闭
希望大虾不吝赐教,其中有问题麻烦指出,谢谢
转载于:https://www.cnblogs.com/monsteryang/p/6442094.html
同时读取两个文件进行while循环相关推荐
- python3 同时读取两个文件
错解 with open('a.txt') as f1:with open('b.txt') as f2:for line1 in f1:for line2 in f2:print(line1+lin ...
- jq 比较两个时间是否在同一天_.NET CORE下最快比较两个文件内容是否相同的方法...
最近项目有个需求,需要比较两个任意大小文件的内容是否相同,要求如下: 项目是.NET CORE,所以使用C#进行编写比较方法 文件大小任意,所以不能将文件内容全部读入到内存中进行比较(更专业点说,需要 ...
- .NET CORE下最快比较两个文件内容是否相同的方法
最近项目有个需求,需要比较两个任意大小文件的内容是否相同,要求如下: 项目是.NET CORE,所以使用C#进行编写比较方法 文件大小任意,所以不能将文件内容全部读入到内存中进行比较(更专业点说,需要 ...
- Python使用pandas读取两个或者多个excel文件(xlsx)并进行数据连接(join)合并两个或者多个excel的信息
Python使用pandas读取两个或者多个excel文件(xlsx)并进行数据连接(join)合并两个或者多个excel的信息 目录
- GDCM:读取两个DICOM文件保存在另外dicom文件中的测试程序
GDCM:读取两个DICOM文件保存在另外dicom文件中 GDCM:读取两个DICOM文件保存在另外dicom文件中 GDCM:读取两个DICOM文件保存在另外dicom文件中 #include & ...
- 10-8 猫和狗 : 创建两个文件cats.txt和dogs.txt, 在第一个文件中至少存储三只猫的名字, 在第二个文件中至少存储三条狗的名字。 编写一个程序, 尝试读取这些文件, 并将其内容打印到
10-8 猫和狗 : 创建两个文件cats.txt和dogs.txt, 在第一个文件中至少存储三只猫的名字, 在第二个文件中至少存储三条狗的名字. 编写一个程序, 尝试读取这些文件, 并将其内容打印到 ...
- python循环读取nc格式文件,并存入文本文件中
先把要读取的nc文件放在同一文件夹中,再用python循环读取,读取文件为从NCEP下载的向下地表平均日长波辐射通量,并计算其月平均值,存放至一个文本文件中https://psl.noaa.gov/c ...
- golang mysql大量写入_Golang 实现分片读取http超大文件流和并发控制
分片读取http超大文件流 Golang中的HTTP发送get请求,在获取内容有两种情况. Golang发送http get请求方式 resp, err := http.Get(sendUrl) if ...
- TensorFlow数据读取机制:文件队列 tf.train.slice_input_producer和 tf.data.Dataset机制
TensorFlow数据读取机制:文件队列 tf.train.slice_input_producer和tf.data.Dataset机制 之前写了一篇博客,关于<Tensorflow生成自己的 ...
- Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数 linecache模块...
Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数 linecache模块 目录 Pycharm使用技巧( ...
最新文章
- IplImage简介
- charles抓app包教程_charles关于手机APP抓包
- Netty-案例 WebSocket与netty实现长连接案例(代码注释详解)
- mysql 生成时间轴,MYSQL 时间轴数据 获取同一天数据的前3条
- springboot初始篇(一)
- 洛谷 P1966 火柴排队 —— 思路
- 吴恩达深度学习5.1练习_Sequence Models_Character level language model - Dinosaurus land
- 在受了老板的委屈时候写下的
- 带你重新认识ZooKeeper!java数组合并去重
- python中score_在Python中“得分必须返回一个数字”scikit-learn中的cross_val_score错误...
- 解决 elementUI 在IE下 table 表格宽度不是100%的问题
- delphi 异步 调用 带参数_Dubbo 关于同步/异步调用的几种方式
- [ CSS ] animation 快速参考
- coreldraw做生化标志_CorelDRAW标志绘制图文教程,logo设计制作教程
- 三国志战略版:当锋无法破防的司马盾
- 对数正态分布的随机数产生 C语言实现
- AIDL简单实用新手教程(AIDL 包含回调,耗时处理,in out inout oneway使用、打包jar等内容) 附demo下载
- 发布APP到腾讯应用宝
- 落花已去,相思成冢。十月的杜鹃雨,下得纷纷扬扬。我走在花瓣雨下,回忆我们曾经的甜蜜温馨,一回首,一抬头,仿佛你就在灯火阑珊处。那些掉落在地上的杜鹃,成了相思的墓,也许是为了祭奠我们曾经的美好。 杜鹃
- 199 c 通过函数名字符串调用函数