知识点:文件对象提供了三个“读”方法: .read()、.readline() 和 .readlines()。每种方法可以接受一个变量以限制每次读取的数据量,但它们通常不使用变量。

问题描述:

我们的设想是想是:当文件读取第一行的时候,读取文件二的所有行数进行打印;读取第二行的时候,读取文件二的所有行数进行打印,以此类推,得到的结果应该是文件一有X行,文件二有Y行,打印总行数为X+(X*Y)

文件1            文件2

a                 x

b                 y

错误代码:

file1=open('1','r')
file2=open('2','r')

line1=file1.readline()

line2=file2.readline()

while line1:
  print line1
  while line2:

    print line2
    line2=file2.readline()

  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')
line1=file1.readline()
while line1:
  print line1
  file2=open('2','r')
  line2=file2.readline()
  while line2: #
    print line2
    line2=file2.readline()

  file2.close
  line1=file1.readline()
file1.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        ---|
x    | 第二次循环循环并读取文件2内容

y    ---| 

从上面的对比可以看出,第一次代码,把第二个while循环后,没有及时的让文件回到首行,才造成了,第二个循环的时候没有办法进入到第二个while循环里面

网上说也可以用seek进行回到首行,但是我执行的时候会提示“AttributeError: 'str' object has no attribute 'seek'”  类型错误

不知道重复读取文件会不会造成什么后果,我把file2.close提前到,当执行完第二个while的时候,就把文件2关闭

希望大虾不吝赐教,其中有问题麻烦指出,谢谢

转载于:https://www.cnblogs.com/monsteryang/p/6442094.html

同时读取两个文件进行while循环相关推荐

  1. python3 同时读取两个文件

    错解 with open('a.txt') as f1:with open('b.txt') as f2:for line1 in f1:for line2 in f2:print(line1+lin ...

  2. jq 比较两个时间是否在同一天_.NET CORE下最快比较两个文件内容是否相同的方法...

    最近项目有个需求,需要比较两个任意大小文件的内容是否相同,要求如下: 项目是.NET CORE,所以使用C#进行编写比较方法 文件大小任意,所以不能将文件内容全部读入到内存中进行比较(更专业点说,需要 ...

  3. .NET CORE下最快比较两个文件内容是否相同的方法

    最近项目有个需求,需要比较两个任意大小文件的内容是否相同,要求如下: 项目是.NET CORE,所以使用C#进行编写比较方法 文件大小任意,所以不能将文件内容全部读入到内存中进行比较(更专业点说,需要 ...

  4. Python使用pandas读取两个或者多个excel文件(xlsx)并进行数据连接(join)合并两个或者多个excel的信息

    Python使用pandas读取两个或者多个excel文件(xlsx)并进行数据连接(join)合并两个或者多个excel的信息 目录

  5. GDCM:读取两个DICOM文件保存在另外dicom文件中的测试程序

    GDCM:读取两个DICOM文件保存在另外dicom文件中 GDCM:读取两个DICOM文件保存在另外dicom文件中 GDCM:读取两个DICOM文件保存在另外dicom文件中 #include & ...

  6. 10-8 猫和狗 : 创建两个文件cats.txt和dogs.txt, 在第一个文件中至少存储三只猫的名字, 在第二个文件中至少存储三条狗的名字。 编写一个程序, 尝试读取这些文件, 并将其内容打印到

    10-8 猫和狗 : 创建两个文件cats.txt和dogs.txt, 在第一个文件中至少存储三只猫的名字, 在第二个文件中至少存储三条狗的名字. 编写一个程序, 尝试读取这些文件, 并将其内容打印到 ...

  7. python循环读取nc格式文件,并存入文本文件中

    先把要读取的nc文件放在同一文件夹中,再用python循环读取,读取文件为从NCEP下载的向下地表平均日长波辐射通量,并计算其月平均值,存放至一个文本文件中https://psl.noaa.gov/c ...

  8. golang mysql大量写入_Golang 实现分片读取http超大文件流和并发控制

    分片读取http超大文件流 Golang中的HTTP发送get请求,在获取内容有两种情况. Golang发送http get请求方式 resp, err := http.Get(sendUrl) if ...

  9. TensorFlow数据读取机制:文件队列 tf.train.slice_input_producer和 tf.data.Dataset机制

    TensorFlow数据读取机制:文件队列 tf.train.slice_input_producer和tf.data.Dataset机制 之前写了一篇博客,关于<Tensorflow生成自己的 ...

  10. Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数 linecache模块...

    Python第五天   文件访问    for循环访问文件    while循环访问文件   字符串的startswith函数和split函数  linecache模块 目录 Pycharm使用技巧( ...

最新文章

  1. IplImage简介
  2. charles抓app包教程_charles关于手机APP抓包
  3. Netty-案例 WebSocket与netty实现长连接案例(代码注释详解)
  4. mysql 生成时间轴,MYSQL 时间轴数据 获取同一天数据的前3条
  5. springboot初始篇(一)
  6. 洛谷 P1966 火柴排队 —— 思路
  7. 吴恩达深度学习5.1练习_Sequence Models_Character level language model - Dinosaurus land
  8. 在受了老板的委屈时候写下的
  9. 带你重新认识ZooKeeper!java数组合并去重
  10. python中score_在Python中“得分必须返回一个数字”scikit-learn中的cross_val_score错误...
  11. 解决 elementUI 在IE下 table 表格宽度不是100%的问题
  12. delphi 异步 调用 带参数_Dubbo 关于同步/异步调用的几种方式
  13. [ CSS ] animation 快速参考
  14. coreldraw做生化标志_CorelDRAW标志绘制图文教程,logo设计制作教程
  15. 三国志战略版:当锋无法破防的司马盾
  16. 对数正态分布的随机数产生 C语言实现
  17. AIDL简单实用新手教程(AIDL 包含回调,耗时处理,in out inout oneway使用、打包jar等内容) 附demo下载
  18. 发布APP到腾讯应用宝
  19. 落花已去,相思成冢。十月的杜鹃雨,下得纷纷扬扬。我走在花瓣雨下,回忆我们曾经的甜蜜温馨,一回首,一抬头,仿佛你就在灯火阑珊处。那些掉落在地上的杜鹃,成了相思的墓,也许是为了祭奠我们曾经的美好。 杜鹃
  20. 199 c 通过函数名字符串调用函数

热门文章

  1. Spring的ioc操作 与 IOC底层原理
  2. bugku-管理员登录-(X-forwarded-for)
  3. 关于c语言中栈和堆释放的问题
  4. FIFO、LRU、LFU的含义和原理(转)
  5. [转]EntityFramework Core技术线路(EF7已经更名为EF Core,并于2016年6月底发布)
  6. 【iCore3 双核心板】例程三十六:DAC实验——输出直流电压
  7. USACO 2.1 海明码(DFS)
  8. 用Redis实现分布式锁 与 实现任务队列
  9. 图解设计模式-Visitor模式
  10. kolla-ansible解析