我是Python的新手,需要一些程序方面的帮助。我的疑问现在已经得到了答复,感谢所有帮助过我的人!
与其尝试自己解析文本文件,我建议您使用 python 标准库中的现成工具之一为您完成工作。有几种不同的可能性,包括配置解析器、csv 和搁置。但对于我的例子,我将使用 json。
json
模块允许您将 python 对象保存到文本文件中。由于您要按名称搜索食谱,因此最好创建食谱字典,然后将其保存到文件中。
每个配方也将是一个字典,并将按名称存储在配方数据库中。因此,首先,您的input_func
需要返回一个食谱字典,如下所示:
def input_func(): #defines the input_function function
...
return {
'name': name,
'people': people,
'ingredients': ingredients,
'quantity': quantity,
'units': units,
'num_ing': num_ing,
}
现在我们需要几个简单的函数来打开和保存配方数据库:
def open_recipes(path):
try:
with open(path) as stream:
return json.loads(stream.read())
except FileNotFoundError:
# start a new database
return {}
def save_recipes(path, recipes):
with open(path, 'w') as stream:
stream.write(json.dumps(recipes, indent=2))
就是这样!现在,我们可以将其全部投入使用:
# open the recipe database
recipes = open_recipes('recipes.json')
# start a new recipe
recipe = input_func()
name = recipe['name']
# check if the recipe already exists
if name not in recipes:
# store the recipe in the database
recipes[name] = recipe
# save the database
save_recipes('recipes.json', recipes)
else:
print('ERROR: recipe already exists:', name)
# rename recipe...
...
# find an existing recipe
search_name = str(input("What is the name of the recipe you wish to retrieve?"))
if search_name in recipes:
# fetch the recipe from the database
recipe = recipes[search_name]
# display the recipe...
else:
print('ERROR: could not find recipe:', search_name)
我显然留下了一些重要的功能供您使用(例如如何显示食谱,如何重命名/编辑食谱等)。