├── file_rewrite ├── 2.txt ├── 4.txt ├── 3.txt ├── 1.txt ├── resulting_file.txt └── re_write.py ├── .idea ├── .gitignore ├── vcs.xml ├── misc.xml ├── inspectionProfiles │ └── profiles_settings.xml ├── modules.xml └── OWR_HW.iml └── cook_book ├── shopping_list.txt ├── recipe.txt ├── recipe_dict.txt └── recipe_book.py /file_rewrite/2.txt: -------------------------------------------------------------------------------- 1 | Строка номер 1 файла номер 2 -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /file_rewrite/4.txt: -------------------------------------------------------------------------------- 1 | Строка номер 1 файла номер 4 2 | Строка номер 2 файла номер 4 3 | Строка номер 3 файла номер 4 4 | Строка номер 4 файла номер 4 -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /file_rewrite/3.txt: -------------------------------------------------------------------------------- 1 | Строка номер 1 файла номер 3 2 | Строка номер 2 файла номер 3 3 | Строка номер 3 файла номер 3 4 | Строка номер 4 файла номер 3 5 | Строка номер 5 файла номер 3 6 | Строка номер 6 файла номер 3 -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /file_rewrite/1.txt: -------------------------------------------------------------------------------- 1 | Строка номер 1 файла номер 1 2 | Строка номер 2 файла номер 1 3 | Строка номер 3 файла номер 1 4 | Строка номер 4 файла номер 1 5 | Строка номер 5 файла номер 1 6 | Строка номер 6 файла номер 1 7 | Строка номер 7 файла номер 1 8 | Строка номер 8 файла номер 1 -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /cook_book/shopping_list.txt: -------------------------------------------------------------------------------- 1 | {'Яйцо': {'quantity': 4, 'measure': 'шт'}, 'Молоко': {'quantity': 200, 'measure': 'мл'}, 'Помидор': {'quantity': 8, 'measure': 'шт'}, 'Говядина': {'quantity': 1000, 'measure': 'г'}, 'Перец сладкий': {'quantity': 2, 'measure': 'шт'}, 'Лаваш': {'quantity': 4, 'measure': 'шт'}, 'Винный уксус': {'quantity': 2, 'measure': 'ст.л'}} -------------------------------------------------------------------------------- /.idea/OWR_HW.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /cook_book/recipe.txt: -------------------------------------------------------------------------------- 1 | Омлет 2 | 3 3 | Яйцо | 2 | шт 4 | Молоко | 100 | мл 5 | Помидор | 2 | шт 6 | 7 | Утка по-пекински 8 | 4 9 | Утка | 1 | шт 10 | Вода | 2 | л 11 | Мед | 3 | ст.л 12 | Соевый соус | 60 | мл 13 | 14 | Запеченный картофель 15 | 3 16 | Картофель | 1 | кг 17 | Чеснок | 3 | зубч 18 | Сыр гауда | 100 | г 19 | 20 | Фахитос 21 | 5 22 | Говядина | 500 | г 23 | Перец сладкий | 1 | шт 24 | Лаваш | 2 | шт 25 | Винный уксус | 1 | ст.л 26 | Помидор | 2 | шт -------------------------------------------------------------------------------- /file_rewrite/resulting_file.txt: -------------------------------------------------------------------------------- 1 | 2.txt 2 | 1 3 | Строка номер 1 файла номер 2 4 | 4.txt 5 | 4 6 | Строка номер 1 файла номер 4 7 | Строка номер 2 файла номер 4 8 | Строка номер 3 файла номер 4 9 | Строка номер 4 файла номер 4 10 | 3.txt 11 | 6 12 | Строка номер 1 файла номер 3 13 | Строка номер 2 файла номер 3 14 | Строка номер 3 файла номер 3 15 | Строка номер 4 файла номер 3 16 | Строка номер 5 файла номер 3 17 | Строка номер 6 файла номер 3 18 | 1.txt 19 | 8 20 | Строка номер 1 файла номер 1 21 | Строка номер 2 файла номер 1 22 | Строка номер 3 файла номер 1 23 | Строка номер 4 файла номер 1 24 | Строка номер 5 файла номер 1 25 | Строка номер 6 файла номер 1 26 | Строка номер 7 файла номер 1 27 | Строка номер 8 файла номер 1 28 | resulting_file.txt 29 | 29 30 | -------------------------------------------------------------------------------- /file_rewrite/re_write.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | path = '../file_rewrite' 4 | 5 | 6 | def rewrite_file(path): 7 | info = {} 8 | for content in os.listdir(path): 9 | if content.rfind('.txt', -4) >= 0: 10 | with open(os.path.join(path, content), 'r', encoding='utf-8') as file: 11 | info[content] = file.readlines() 12 | 13 | with open('../file_rewrite/resulting_file.txt', 'w', encoding='utf-8') as file: 14 | for file_name, rows in sorted(info.items(), key=lambda x: len(x[1])): 15 | file.write(file_name + '\n') 16 | file.write(str(len(rows)) + '\n') 17 | if '\n' not in rows[-1]: 18 | rows[-1] += '\n' 19 | file.write(''.join(rows)) 20 | 21 | 22 | rewrite_file(path) 23 | log = open('../file_rewrite/resulting_file.txt', encoding='utf-8') 24 | print(log.read()) 25 | -------------------------------------------------------------------------------- /cook_book/recipe_dict.txt: -------------------------------------------------------------------------------- 1 | {'Омлет': [{'ingredient_name': 'Яйцо', 'quantity': '2', 'measure': 'шт'}, {'ingredient_name': 'Молоко', 'quantity': '100', 'measure': 'мл'}, {'ingredient_name': 'Помидор', 'quantity': '2', 'measure': 'шт'}], 'Утка по-пекински': [{'ingredient_name': 'Утка', 'quantity': '1', 'measure': 'шт'}, {'ingredient_name': 'Вода', 'quantity': '2', 'measure': 'л'}, {'ingredient_name': 'Мед', 'quantity': '3', 'measure': 'ст.л'}, {'ingredient_name': 'Соевый соус', 'quantity': '60', 'measure': 'мл'}], 'Запеченный картофель': [{'ingredient_name': 'Картофель', 'quantity': '1', 'measure': 'кг'}, {'ingredient_name': 'Чеснок', 'quantity': '3', 'measure': 'зубч'}, {'ingredient_name': 'Сыр гауда', 'quantity': '100', 'measure': 'г'}], 'Фахитос': [{'ingredient_name': 'Говядина', 'quantity': '500', 'measure': 'г'}, {'ingredient_name': 'Перец сладкий', 'quantity': '1', 'measure': 'шт'}, {'ingredient_name': 'Лаваш', 'quantity': '2', 'measure': 'шт'}, {'ingredient_name': 'Винный уксус', 'quantity': '1', 'measure': 'ст.л'}, {'ingredient_name': 'Помидор', 'quantity': '2', 'measure': 'шт'}]} -------------------------------------------------------------------------------- /cook_book/recipe_book.py: -------------------------------------------------------------------------------- 1 | from pprint import pprint 2 | 3 | 4 | class Cookbook: 5 | def __init__(self, document): 6 | self.document = document 7 | self.cook_book = {} 8 | 9 | def make_cook_book(self): 10 | with open(self.document, encoding='utf-8') as file: 11 | for lines in file: 12 | item = lines.strip() 13 | amount = int(file.readline()) 14 | food_list = [] 15 | for i in range(amount): 16 | ingr = file.readline().split(' | ') 17 | ingredients = {'ingredient_name': ingr[0], 'quantity': ingr[1], 'measure': ingr[2].strip()} 18 | food_list.append(ingredients) 19 | self.cook_book[item] = food_list 20 | file.readline() 21 | book = open('recipe_dict.txt', 'w', encoding='utf-8') 22 | book.write(f'{self.cook_book}') 23 | book.close() 24 | return self.cook_book 25 | 26 | 27 | def get_shop_list_by_dishes(dishes: list, res, person_count=2): 28 | cook_book = res.make_cook_book() 29 | shop_list = {} 30 | for dish_name in dishes: 31 | for ingredient in cook_book.get(dish_name, []): 32 | if ingredient['ingredient_name'] in shop_list: 33 | shop_list[ingredient['ingredient_name']]['quantity'] += int(ingredient['quantity']) * person_count 34 | else: 35 | shop_list[ingredient['ingredient_name']] = {'quantity': int(ingredient['quantity']) * person_count, 'measure': ingredient['measure']} 36 | shop_list_file = open('shopping_list.txt', 'w', encoding='utf-8') 37 | shop_list_file.write(f'{shop_list}') 38 | shop_list_file.close() 39 | return shop_list 40 | 41 | 42 | recipe = Cookbook('recipe.txt') 43 | pprint(recipe.make_cook_book(), width=70, sort_dicts=False) 44 | print() 45 | dish_list = ['Омлет', 'Фахитос'] 46 | recipe_dict = open('recipe_dict.txt', 'r', encoding='utf-8') 47 | pprint(get_shop_list_by_dishes(dish_list, recipe), width=70) 48 | --------------------------------------------------------------------------------