├── 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 |
4 |
5 |
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 |
--------------------------------------------------------------------------------