我有一个测试文件(不是 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/