Python:逐行迭代.txt文件多次



我有一个类,它读取。txt文件并对其执行一些不同的功能。我在下面提供了我的代码示例。

class Example(object):
  def __init__(self,fileName):
    self.file = open(fileName)
  def function_a(self):
    for line in self.file:
      for char in line:
        #Do some things
  def function_b(self):
    for line in self.file:
      for char in line:
        #Do some other things

当我创建对象并调用function_a或function_b时,一切都工作得很好。然而,如果我在调用function_a之后调用function_b(反之亦然),第一个函数调用的工作完美,但第二个函数的行为就像self一样。文件为空。

我只能假设在self中嵌入了某种计数器或指针。文件,该文件已被第一个函数激活,现在位于文件末尾。因此,当我尝试调用第二个函数时,它会拾取指针所在的位置,并且在注意到没有更多的行之后,它返回没有任何错误。

假设我不能结合function_a和function_b来同时执行它们的操作,我如何重置self ?这样,当我第二次尝试遍历它时,它将从头开始?

还是我的假设错了,还有其他事情在发生?

在遍历一个文件后,您需要告诉它返回到开头。

self.file.seek(0)

self.file是一个迭代器,只能使用一次。这意味着在你对function_a进行迭代之后,这是不可能使用它在function_b。我认为一个好的解决方案是将文件存储在列表中,即

def __init__(self, fileName):
    with open(fileName, 'r') as f:
        self.file_list = f.readlines()

如果文件不太大,这应该可以工作,否则您也可以使用f.seek(0)将文件指针设置为文件的开头。

相关内容

  • 没有找到相关文章

最新更新