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

时间:2014-04-14 16:27:46

标签: 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 duplicateFound.group('food') == food:
            return duplicateFound
        else:
            return False

但是我再次运行该方法。但是我的程序并不像我想要的那样工作。具体来说

def build_meal_plan():
    number_of_items = int(raw_input("How many items would you like to add to your meal plan? "))
    count = 0
    while number_of_items > 0:
        print count
        food = raw_input("Enter in food name: ")
        print food
        if findFood(food):
            servings = int(raw_input("Number of servings: "))
        else:
            print "Food not found! Try again? (y/n): ",
            choice = raw_input()
            if choice == 'y' or choice == "yes":
                number_of_items += 1
            else:
                return

然而,在我的findFood方法的第二次运行期间,我找不到.txt文件中我知道的项目。我不知道为什么我在第一次运行期间找不到我在文本文件中找到的相同项目。我的假设是你只能通过一次txt文件。

1 个答案:

答案 0 :(得分:1)

致电f.readlines()后,您就在文件的末尾。要返回到开头,您可以再次浏览,请致电f.seek(0)

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:
        ...

然后你不必担心回到起点。