Python - 有没有办法通过一行来追溯文件对象的当前位置

标签 python

我有一个测试文件(不是 python 脚本),其中包含以下形式的多个序列:

testFile (不是 python 脚本)

#Gibberish
#Gibberish
newSeq name-and-details
10 something
20 something
30 something
newSeq name-and-details
10 something
20 something
30 something
#Gibberish
#Gibberish
newSeq name-and-details
...and so forth

然后,我有一个 python 脚本读取这个文件作为输入。对于每个新序列,都会创建一个新的 python-list 来存储内容。

inputFile = open('testFile','r')
moreSeq = True
newLine = inputFile.readline()
while moreSeq:
  while (not ('newSeq' in newLine)):
    newLine = inputFile.readline()
  newList = []
  moreSeq = newList.listEntry(inputFile)
  listDB.append(newList)

但是当文件对象 inputFile 传递给 listEntry 方法时,我希望它的位置指向 newSeq 的开头而不是后续索引:

即我希望它指向 newSeq #1 行,而不是 10 something

如何通过一行或几行中的固定度量来追溯文件对象的位置。我相信 seek 在这种情况下不起作用。

最佳答案

这是一个常见问题,通常可以通过取消阅读以下代码中的行来解决:

class SmartReader(object):
    def __init__(self, file):
       self.file = file
       self.lastline = None
    def readline(self):
       if self.lastline is not None:
          ln = self.lastline
          self.lastline = None
          return ln
       return self.file.readline()
    def unreadline(self, line):
       self.lastline = line           


     ...


    fd = SmartReader(open("file.txt"))
    readMore = True
    while readMore:
       line = fd.readline()
       if its_newSeq():
          fd.unreadline(line)
          close_the_previous_sequence()
       else:
          process_the_line()

关于Python - 有没有办法通过一行来追溯文件对象的当前位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24447122/

相关文章:

python - Django - 扩展应用程序的模型以覆盖其管理器

python - Odoo 如何继承 Mail.Thread AbstractModel 并重写该类的函数?

python - 获取 Django 模型字段的 Python 类型?

python - opencv:类型错误:掩码不是数字元组

python - QTreeView/QStandardItemModel 中选定的行

Python 循环(for 或 while)

python - 根据列值从数据框中插入值

jquery - python selenium 如何最好地检测闪烁文本?

python - 如何根据单列对数据框中的唯一表进行排序?

python - 如何在Linux环境下读取Windows文件?