当前位置: 首页 > 面试题库 >

Python-第二次遍历文件不起作用

孙福
2023-03-14
问题内容

我对文件进行迭代有问题。这是我在解释器上键入的内容和结果:

>>> f = open('baby1990.html', 'rU')
>>> for line in f.readlines():
...  print(line)
... 
# ... all the lines from the file appear here ...

当我尝试再次遍历同一个打开的文件时,我什么也没得到!

>>> for line in f.readlines():
...  print(line)
... 
>>>

根本没有输出。为了解决这个问题,我必须对close()文件进行编辑,然后再次将其打开以进行读取!那是正常行为吗?


问题答案:

是的,这是正常行为。基本上,你是第一次读取文件的末尾(可以像读取磁带一样对它进行图片处理),因此除非你使用f.seek(0)重定位到文件开头的位置进行重置,否则你将无法从文件中读取更多内容。文件,或者将其关闭,然后再次打开,它将从文件的开头开始。

如果你愿意,可以改用with语法,它将自动为你关闭文件。

例如,

with open('baby1990.html', 'rU') as f:
  for line in f:
     print line

一旦完成该块的执行,文件将自动为你关闭,因此你可以重复执行此块,而无需自己显式关闭文件并以此方式再次读取文件。



 类似资料:
  • 问题内容: 我有一台服务器,可以跟踪一些数据。当我使用管理员应用程序连接到服务器以检出数据的当前状态时。我使用5秒的刷新率。服务器第一次发送数据时,它可以工作。但是第二次,当数据更改时,管理端不会接收到最新数据。我正在通过ObjectOutputStream和ObjectInputStream发送包装在类中的数据: 这是数据的包装器类: public class Leerling implemen

  • 主要内容:层次遍历的实现过程,实现代码前边介绍了 二叉树的先序、中序和后序的遍历算法,运用了 栈的 数据结构,主要思想就是按照先左子树后右子树的顺序依次遍历树中各个结点。 本节介绍另外一种遍历方式:按照二叉树中的层次从左到右依次遍历每层中的结点。具体的实现思路是:通过使用 队列的数据结构,从树的根结点开始,依次将其左孩子和右孩子入队。而后每次队列中一个结点出队,都将其左孩子和右孩子入队,直到树中所有结点都出队,出队结点的先后顺序就是层

  • 问题内容: 这个问题已经在这里有了答案 : 第二次遍历文件不起作用 (4个答案) 去年关闭。 我正在编写一个程序,要求我多次遍历文件的每一行: 为了简洁起见,我假设我总是需要遍历文件并每行打印5次。该代码与我在程序中实现的较长版本存在相同的问题:文件仅迭代一次。之后,该文件不执行任何操作。为什么是这样? 问题答案: 这是因为该行在循环之前仅出现一次。这将创建一个指向文件中一个位置的游标,因此,当您

  • 问题内容: 我创建了一个二维数组,如: 打印此列表将给出输出: 其中每个列表项都是“行,列”格式的字符串 现在给出此列表,我想按顺序迭代它: 依次遍历第一列和第二列,依此类推。我该如何循环? 此问题与纯python列表有关,而标记为相同的问题与numpy数组有关。他们明显不同 问题答案: 使用和。就像是:

  • 层次遍历 给定二叉树的包含虚结点的先序遍历序列信息,按层次顺序给出遍历的结果。 输入格式: 首先输入一个整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据在一行中输入一个字符串(不含空格且长度不超过80),表示二叉树的先序遍历序列(其中@表示虚结点)。 输出格式: 对于每组测试,输出层次遍历的结果。 输入样例: 1 ABD@@EG@@@C@F@@ 输出样例: ABCDEFG 代码长度限制

  • 问题内容: 我正在尝试从模板中的控制器填充对象列表。 这是控制器: 但是,我编写的这段代码无法正常工作: 用户界面中未显示任何内容。 相反,如果我在控制器中编写代码,它将起作用: 由于我知道在控制器中要做的事情很诱人,因此我在尝试避免尽可能多地使用。 如果有人能证明的正确使用和差异betwee 和(其中是控制器的别名),我应该心存感激。 问题答案: 问题是您正在访问内部函数而不是控制器函数中存在的