知识点:文件对象提供了三个“读”方法: .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. vueInitVux中引入bootstrap、jquery步骤

    1.先从github上下载 vueInitVux 2.将 build下webpack.base.conf.js 文件 替换成 Html5IQ下的文件 3.npm i 4.npm i jquery -- ...

  2. .net core 使用ViewComponent

    .net core 中的局部视图组件是ViewComponent,可以用于建制重复使用公共功能组件 一.新建一个类DemoViewComponent(必须以ViewComponent结尾)且继承Vie ...

  3. CSS @规则

    最近在看极客时间winter大神的重学前端系列,遇到了许多不常用但是很重要的知识点.感觉视野得到了极大的开阔(打个广告,哈哈). 其中css @规则令人印象深刻.简单的做下笔记: @namespace ...

  4. GitHub 总是打不开,网再好也米有用,怎么办?

    所用方法:修改host文件 一.键入网址:http://github.global.ssl.fastly.net.ipaddress.com/#ipinfo 拿到github.global.ssl.f ...

  5. 【转载】Kafka史上最详细原理总结

    Kafka是最初由Linkedin公司开发,是一个分布式.支持分区的(partition).多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量 ...

  6. Shel脚本-初步入门之《06》

    Shel脚本-初步入门-06 Shell 脚本的建立和执行 6.Shell 脚本的建立和执行 6.1 Shell脚本的建立 在 Linux 系统中,Shell 脚本(bash Shell 程序)通常是 ...

  7. 2019 Multi-University Training Contest 1 E Path(最短路+最小割)

    题意 链接:https://vjudge.net/problem/HDU-6582 给定一个有向图,可以有重边,每条边上有一个权值表示删掉这条边的代价,问最少花费多少代价能使从s到t节点的最短路径增大 ...

  8. Linux shell 判断字符串为空等常用命令

    1.判断字符串为空 if [ -z "$str" ]; then echo "empty string" fi 2.判断文件是否存在 if [ -f /home ...

  9. 工具资源系列之 github 上各式各样的小徽章从何而来?

    前言 平时大家在在逛 github 时或多或少都看到过项目首页各式各样的小徽章,不知道你是否和我一样好奇这些小徽章都是哪来的呢? 首先我们先来一睹为快目前前端开发的三大主流框架: var ,看一看他们 ...

  10. T-SQL(SQLSERVER)

    使用自定义类型名 CREATE DATABASE Student GO USE Student GO Exec sp_addtype char20,'varchar(20)','null' GO 在库 ...