知识点:文件对象提供了三个“读”方法: .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关闭

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

同时读取两个文件进行while循环的更多相关文章

  1. python读取两个文件并且判断是否一致

    ''' 判断两个文件是否相同,如果不同请指出第几行不相同 ''' def f1vsf2(name1,name2): f1 = open(name1) f2 = open(name2) count = ...

  2. python 合并两个文件并将合并内容保存在另一个文件中

    简单地文件合并方法 思路如下: 分别读取两个文件中的内容,并将其保存在一个列表中,将列表通过join()函数转为字符,并将新字符保存在新的文件中. 其中,test1.txt中的内容为: test2.t ...

  3. matlab中读取txt数据文件(txt文本文档)

    matlab中读取txt数据文件(txt文本文档) 根据txt文档不同种类介绍不同的读取数据方法 一.纯数据文件(没有字母和中文,纯数字) 对于这种txt文档,从matalb中读取就简单多了 例如te ...

  4. Python读取和处理文件后缀为".sqlite"的数据文件

    最近在弄一个项目分析的时候,看到有一个后缀为”.sqlite”的数据文件,由于以前没怎么接触过,就想着怎么用python来打开并进行数据分析与处理,于是稍微研究了一下. SQLite是一款非常流行的关 ...

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

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

  6. Shell 命令行求两个文件每行对比的相同内容

    Shell 命令行求两个文件每行对比的相同内容 遇到的一个实际问题是,2017年08月01日起,所有未经实名的域名,全部停止解析.而我手上有不少域名,其中很多都是没有实名的.但我不知道哪些实名了,哪些 ...

  7. .NET Core的文件系统[1]:读取并监控文件的变化

    ASP.NET Core 具有很多针对文件读取的应用.比如我们倾向于采用JSON文件来定义配置,所以应用就会涉及针对配置文件读取.如果用户发送一个针对物理文件的HTTP请求,应用会根据指定的路径读取目 ...

  8. matlab 连续读取多个文件

    方法1: 把文件的文件名按一定的规律命名,假如:filename1.txt,filename2.txt,...,fielname100.txt,在读取的时候则可以使用循环: for i = 1:100 ...

  9. 两个文件去重的N种姿势

    最近利用shell帮公司优化挖掘关键词的流程,用shell替代了多个环节的操作,极大提高了工作效率. shell在文本处理上确有极大优势,比如多文本合并.去重等,但是最近遇到了一个难搞的问题,即两个大 ...

随机推荐

  1. Vue--过滤器、指令、插件

    常用下载js的网址: https://www.bootcdn.cn/ https://www.jsdelivr.com/ 一.过滤器 vue 允许自定义过滤器,用于格式化一些常见文本(如日期等). 1 ...

  2. uni-app聊天室|vue+uniapp仿微信聊天实例|uniapp仿微信App界面

    一.介绍 运用UniApp+Vue+Vuex+swiper+uniPop等技术开发的仿微信原生App聊天室|仿微信聊天界面实例项目uniapp-chatroom,实现了发送图文消息.表情(gif图), ...

  3. matlab C程序

    通过把耗时长的函数用c语言实现,并编译成mex函数可以加快执行速度 Matlab本身是不带c语言的编译器的,所以要求你的机器上已经安装有VC,BC或Watcom C中的一种 注:在Matlab里,矩阵 ...

  4. [b0005] Linux 系统常用操作命令

    1 Ubuntu 解压 hadoop@ssmaster:~$ -bin-hadoop2..tgz 联网安装程序包 sudo apt-get install php

  5. liteos MMU(十八)

    1. 概述 1.1 基本概念 MMU全称"Memory Management Unit",顾名思义就是"内存管理单元". 1.2 运作机制 建立页表描述符号表, ...

  6. Linux:路径的概念及路径的切换

    路径分为绝对路径和相对路径 绝对路径:从/根开头的路径为绝对路径 相对路径:以当前目录为开头的为相对路径 根目录:/ 家目录:普通用户的家目录在/home下,root用户的家目录是/root 切换目录 ...

  7. day69_10_14 drf接口框架。

    一.drf框架简介 drf全程是:django-rest framework. 其中涉及的知识点有. 1.接口:什么是接口.restful接口规范 2.CBV生命周期源码 - 基于restful规范下 ...

  8. 使用Appium进行微信公众号自动化测试

    查看Android的webview视图版本:手机链接电脑后在电脑Chrome打开页面chrome://inspect/#devices查看Android的Chrome内核版本     下载与该版本相对 ...

  9. Codeforces Round #575 (Div. 3) D2. RGB Substring (hard version) 水题

    D2. RGB Substring (hard version) inputstandard input outputstandard output The only difference betwe ...

  10. OpenDaylight开发hello-world项目之开发工具安装

    OpenDaylight开发hello-world项目之开发环境搭建 OpenDaylight开发hello-world项目之开发工具安装 OpenDaylight开发hello-world项目之代码 ...