以下是一个简单的搜索。除了iterator
正在跳过文件的第一行这一事实外,它可以正常工作。内部iterator
第一个print
语句具有正确的单词,但第二个print
语句(在for
循环之后)具有第二行文本,而不是第一行。< / p>
我错过了这个for
循环行为怎么样?
"""Searches for the query inside a file
"""
def lines(the_file, query):
lines = open(the_file)
line(lines, query)
def line(lines, query):
line = lines.readline()
iterator(line, lines, word, query)
def word(line, query):
word = line.strip()
conditional(query, word)
def iterator(this, that, function, query):
print this
for this in that:
print this
function(this, query)
def conditional(this, that):
if this in that:
output(that, True)
else:
None
def output(query, result):
print query
def search(the_file, query):
lines(the_file, query)
search('c:/py/myfile.txt', 'a')
答案 0 :(得分:1)
变量lines
是一个文件对象,当您创建readline()
时,您将指针移动到第二行。
答案 1 :(得分:1)
我认为你的问题在这里:
def line(lines, query):
line = lines.readline()
iterator(line, lines, word, query)
这一行:line = lines.readline()
在开始迭代之前从文件中读取一行。然后在for
循环中,您实际上覆盖了this
变量,它不再指向原始line
。