第一行文件被跳过。蟒蛇

时间:2013-01-29 23:41:07

标签: python

以下是一个简单的搜索。除了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')

2 个答案:

答案 0 :(得分:1)

变量lines是一个文件对象,当您创建readline()时,您将指针移动到第二行。

答案 1 :(得分:1)

我认为你的问题在这里:

def line(lines, query):
    line = lines.readline()
    iterator(line, lines, word, query)

这一行:line = lines.readline()在开始迭代之前从文件中读取一行。然后在for循环中,您实际上覆盖了this变量,它不再指向原始line