/
mkrl0412
/
PyOF
Обзор
Документация
Войти
/
mkrl0412
/
PyOF
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
PythonOpenFiles.py
108 строк
4 KB
mkrl0412
upload files
29 окт 2025, 08:59
29 окт 2025, 08:59
93fa736
Код
Авторство
О чём код?
def get_cook_book(filename): cook_book = {} with open('recipe book.txt', 'r', encoding='utf-8') as file: while True: # читаем название блюда dish_name = file.readline().strip() if not dish_name: # если строка пустая - конец файла break # читаем количество ингредиентов ing_count = int(file.readline().strip()) ingredients = [] for i in range(ing_count): # читаем данные об ингредиенте ing_line = file.readline().strip() if not ing_line: # Если строка пустая break # разделяем строку по разделителю '|' ing_data = [item.strip() for item in ing_line.split('|')] # создаем словарь для ингредиента ingredient = { 'ingredient_name': ing_data[0], 'quantity': int(ing_data[1]), 'measure': ing_data[2] } ingredients.append(ingredient) # добавляем блюдо в кулинарную книгу cook_book[dish_name] = ingredients # пропускаем пустую строку между блюдами file.readline() return cook_book # Использование - передаем правильное имя файла cook_book = get_cook_book('recipe book.txt') # в конце передаём файл с которым работаем в функцию 'recipe book.txt' print(cook_book) def get_shop_list_by_dishes(dishes, person_count,cook_book): shop_list = {} for dish_name in dishes: print(f'Блюдо:{dish_name}') if dish_name in cook_book: ingredients = cook_book[dish_name] for ingredient in ingredients: name = ingredient['ingredient_name'] quantity = ingredient['quantity'] * person_count measure = ingredient['measure'] print(f" - {name}: {quantity} {measure}") if name not in shop_list: shop_list[name] = { 'measure': measure, 'quantity': quantity } else: shop_list[name]['quantity'] += quantity #если ингредиент есть, то суммироем return shop_list result = get_shop_list_by_dishes(['Омлет', 'Запеченный картофель'], 2, cook_book) print(result) def merge_files(output_filename, input_filenames): # Шаг 1: Собираем информацию о файлах files_info = [] for filename in input_filenames: with open(filename, 'r', encoding='utf-8') as file: lines = file.readlines() files_info.append({ 'name': filename, 'line_count': len(lines), 'content': lines }) # Шаг 2: Сортируем по количеству строк files_info.sort(key=lambda x: x['line_count']) # Шаг 3: Записываем в итоговый файл with open(output_filename, 'w', encoding='utf-8') as output_file: for file_info in files_info: # Записываем служебную информацию output_file.write(f"{file_info['name']}\n") output_file.write(f"{file_info['line_count']}\n") # Записываем содержимое файла for line in file_info['content']: output_file.write(line) output_file.write("\n") print(f"Файлы успешно объединены в {output_filename}") # Использование files_to_merge = ['1.txt', '2.txt', '3.txt'] # замени на свои имена файлов merge_files('result.txt', files_to_merge)