Python 在第二次读取期间在文本文件中查找项

Python 在第二次读取期间在文本文件中查找项,python,Python,在我的程序开始时,我用f=open(“foods.txt”,“r+”)打开了一个文件。后来我调用了我创建的这个方法 def findFood(food): foodRegex = re.compile(r'(?P<food>\S+)\s+\-.*') for line in f.readlines(): print line duplicateFound = re.search(foodRegex, line) if d

在我的程序开始时,我用
f=open(“foods.txt”,“r+”)
打开了一个文件。后来我调用了我创建的这个方法

def findFood(food):
    foodRegex = re.compile(r'(?P<food>\S+)\s+\-.*')
    for line in f.readlines():
        print line
        duplicateFound = re.search(foodRegex, line)
        if duplicateFound.group('food') == food:
            return duplicateFound
        else:
            return False

但是,在我的
findFood
方法的第二次运行期间,我无法找到我知道存在于
.txt
文件中的项目。我不知道为什么我找不到第一次运行时在文本文件中找到的相同项目。我的假设是,您只能浏览一次txt文件。

一旦调用
f.readlines()
,您就位于文件的末尾。要返回到起始位置,以便再次查看,请调用
f.seek(0)

并使用它,而不是引用回该文件

def findFood(food, data):
    foodRegex = re.compile(r'(?P<food>\S+)\s+\-.*')
    for line in data:
        ...
def findFood(食品、数据):
foodRegex=re.compile(r'(?P\S+)\S+\-.*)
对于行输入数据:
...

这样,您就不必担心返回到开始处。

一旦调用
f.readlines()
,您就到了文件的末尾。您需要
f.seek(0)
返回开始。或者,将文件导入一个列表并操作它。@jornsharpe仍在这里学习python。您能否详细说明一下“或者,将文件导入到列表中并对其进行操作”
def findFood(food):
    foodRegex = re.compile(r'(?P<food>\S+)\s+\-.*')
    for line in f.readlines():
        ...
    f.seek(0)
def import_file(filename):
    with open(filename) as f:
        content = [line.strip() for line in f]
    return content
def findFood(food, data):
    foodRegex = re.compile(r'(?P<food>\S+)\s+\-.*')
    for line in data:
        ...