From 822467bd9908715fa85eabccf3eb49254ce49869 Mon Sep 17 00:00:00 2001 From: maksim Date: Mon, 23 Sep 2024 13:20:26 +0400 Subject: [PATCH 1/5] add branch + readme --- kashin_maxim_lab_2/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 kashin_maxim_lab_2/README.md diff --git a/kashin_maxim_lab_2/README.md b/kashin_maxim_lab_2/README.md new file mode 100644 index 0000000..8c9a827 --- /dev/null +++ b/kashin_maxim_lab_2/README.md @@ -0,0 +1 @@ +Тут будет отчёт \ No newline at end of file From b13182c80e7257d22b58d31944c7faca4ca2ef93 Mon Sep 17 00:00:00 2001 From: maksim Date: Mon, 23 Sep 2024 15:28:34 +0400 Subject: [PATCH 2/5] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B1=D0=BB=D0=B5=D0=BC?= =?UTF-8?q?=D0=B0=20=D1=81=20Docker=20=D0=BD=D0=B0=20=D0=BA=D0=BE=D0=BC?= =?UTF-8?q?=D0=BF=D1=8C=D1=8E=D1=82=D0=B5=D1=80=D0=B5.=20=D0=A1=D0=BE?= =?UTF-8?q?=D1=85=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D1=86=D0=B5=D1=81=D1=81=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kashin_maxim_lab_2/.gitignore | 1 + kashin_maxim_lab_2/docker-compose.yml | 7 +++++ kashin_maxim_lab_2/program_0/Dockerfile | 7 +++++ kashin_maxim_lab_2/program_0/main.py | 37 +++++++++++++++++++++++++ 4 files changed, 52 insertions(+) create mode 100644 kashin_maxim_lab_2/.gitignore create mode 100644 kashin_maxim_lab_2/docker-compose.yml create mode 100644 kashin_maxim_lab_2/program_0/Dockerfile create mode 100644 kashin_maxim_lab_2/program_0/main.py diff --git a/kashin_maxim_lab_2/.gitignore b/kashin_maxim_lab_2/.gitignore new file mode 100644 index 0000000..cef5ae5 --- /dev/null +++ b/kashin_maxim_lab_2/.gitignore @@ -0,0 +1 @@ +var/ \ No newline at end of file diff --git a/kashin_maxim_lab_2/docker-compose.yml b/kashin_maxim_lab_2/docker-compose.yml new file mode 100644 index 0000000..9b96362 --- /dev/null +++ b/kashin_maxim_lab_2/docker-compose.yml @@ -0,0 +1,7 @@ +services: + + program_0: + build: + context: ./program_0 + volumes: + - ./data:/var/data \ No newline at end of file diff --git a/kashin_maxim_lab_2/program_0/Dockerfile b/kashin_maxim_lab_2/program_0/Dockerfile new file mode 100644 index 0000000..bccadfc --- /dev/null +++ b/kashin_maxim_lab_2/program_0/Dockerfile @@ -0,0 +1,7 @@ +FROM python:3.12-slim + +WORKDIR /program_0 + +COPY main.py /program_0/ + +CMD ["python", "main.py"] \ No newline at end of file diff --git a/kashin_maxim_lab_2/program_0/main.py b/kashin_maxim_lab_2/program_0/main.py new file mode 100644 index 0000000..76490ab --- /dev/null +++ b/kashin_maxim_lab_2/program_0/main.py @@ -0,0 +1,37 @@ +import random +import os + +folder_path = './kashin_maxim_lab_2/var/data' + +def creat_folder(): + if not os.path.exists(folder_path): + os.makedirs(folder_path) + else: + print(f"Папка `{folder_path}` уже существует!") + +def delete_files_in_folder(): + for filename in os.listdir(folder_path): + file_path = os.path.join(folder_path, filename) + try: + if os.path.isfile(file_path): + os.remove(file_path) + except Exception as e: + print(f'Ошибка при удалении файла {file_path}. {e}') + +def creat_file(): + for i in range(random.randrange(10, 20)): + file = open(f'{folder_path}/file_{i}.txt', 'w+') + for i in range(random.randrange(10, 50)): + file.write(f'{create_lines()} \n') + file.close() + +def create_lines(): + lines = [i for i in range(random.randrange(1, 50),random.randrange(50, 100),random.randrange(1, 10))] + return lines + +if os.path.exists(folder_path): + delete_files_in_folder() + creat_file() +else: + creat_folder() + creat_file() \ No newline at end of file From 6ce78e60ada7ddf7eed9c0d016692a70c8f44efc Mon Sep 17 00:00:00 2001 From: maksim Date: Mon, 23 Sep 2024 16:00:41 +0400 Subject: [PATCH 3/5] =?UTF-8?q?=D0=9F=D0=BE=D1=87=D0=B8=D0=BD=D0=B8=D0=BB?= =?UTF-8?q?=20=D0=B3=D0=B5=D0=BD=D0=B5=D1=80=D0=B0=D1=86=D0=B8=D1=8E=20?= =?UTF-8?q?=D1=84=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kashin_maxim_lab_2/docker-compose.yml | 2 +- kashin_maxim_lab_2/program_0/main.py | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/kashin_maxim_lab_2/docker-compose.yml b/kashin_maxim_lab_2/docker-compose.yml index 9b96362..29dc4c0 100644 --- a/kashin_maxim_lab_2/docker-compose.yml +++ b/kashin_maxim_lab_2/docker-compose.yml @@ -4,4 +4,4 @@ services: build: context: ./program_0 volumes: - - ./data:/var/data \ No newline at end of file + - ./var/data:/data \ No newline at end of file diff --git a/kashin_maxim_lab_2/program_0/main.py b/kashin_maxim_lab_2/program_0/main.py index 76490ab..9bc8417 100644 --- a/kashin_maxim_lab_2/program_0/main.py +++ b/kashin_maxim_lab_2/program_0/main.py @@ -1,11 +1,12 @@ import random import os -folder_path = './kashin_maxim_lab_2/var/data' +folder_path = '/data' def creat_folder(): if not os.path.exists(folder_path): os.makedirs(folder_path) + print(f"Папка `{folder_path}` создана!") else: print(f"Папка `{folder_path}` уже существует!") @@ -15,23 +16,29 @@ def delete_files_in_folder(): try: if os.path.isfile(file_path): os.remove(file_path) + print(f"Файл `{file_path}` удален.") except Exception as e: print(f'Ошибка при удалении файла {file_path}. {e}') def creat_file(): for i in range(random.randrange(10, 20)): file = open(f'{folder_path}/file_{i}.txt', 'w+') + print(f"Создан файл: {folder_path}/file_{i}.txt") for i in range(random.randrange(10, 50)): file.write(f'{create_lines()} \n') file.close() def create_lines(): - lines = [i for i in range(random.randrange(1, 50),random.randrange(50, 100),random.randrange(1, 10))] + lines = [i for i in range(random.randrange(1, 50), random.randrange(50, 100), random.randrange(1, 10))] return lines if os.path.exists(folder_path): + print(f"Папка `{folder_path}` существует, удаляем старые файлы...") delete_files_in_folder() creat_file() else: + print(f"Папка `{folder_path}` не существует, создаем...") creat_folder() - creat_file() \ No newline at end of file + creat_file() + +print("Скрипт на создание файлов выполнен.") From 7d9c9ec4d0e475a781c8eb8751ef8ec95ce550f5 Mon Sep 17 00:00:00 2001 From: maksim Date: Tue, 24 Sep 2024 18:13:22 +0400 Subject: [PATCH 4/5] =?UTF-8?q?=D0=9E=D1=81=D1=82=D0=B0=D0=BB=D0=BE=D1=81?= =?UTF-8?q?=D1=8C=20readme=20=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D1=82=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kashin_maxim_lab_2/docker-compose.yml | 19 ++++++++- kashin_maxim_lab_2/program_1/Dockerfile | 7 ++++ kashin_maxim_lab_2/program_1/main.py | 52 +++++++++++++++++++++++++ kashin_maxim_lab_2/program_2/Dockerfile | 7 ++++ kashin_maxim_lab_2/program_2/main.py | 48 +++++++++++++++++++++++ 5 files changed, 132 insertions(+), 1 deletion(-) create mode 100644 kashin_maxim_lab_2/program_1/Dockerfile create mode 100644 kashin_maxim_lab_2/program_1/main.py create mode 100644 kashin_maxim_lab_2/program_2/Dockerfile create mode 100644 kashin_maxim_lab_2/program_2/main.py diff --git a/kashin_maxim_lab_2/docker-compose.yml b/kashin_maxim_lab_2/docker-compose.yml index 29dc4c0..7d6813c 100644 --- a/kashin_maxim_lab_2/docker-compose.yml +++ b/kashin_maxim_lab_2/docker-compose.yml @@ -4,4 +4,21 @@ services: build: context: ./program_0 volumes: - - ./var/data:/data \ No newline at end of file + - ./var/data:/data + + program_1: + build: + context: ./program_1 + volumes: + - ./var/data:/data + - ./var/result:/result + depends_on: + - program_0 + + program_2: + build: + context: ./program_2 + volumes: + - ./var/result:/result + depends_on: + - program_1 \ No newline at end of file diff --git a/kashin_maxim_lab_2/program_1/Dockerfile b/kashin_maxim_lab_2/program_1/Dockerfile new file mode 100644 index 0000000..bd44d1d --- /dev/null +++ b/kashin_maxim_lab_2/program_1/Dockerfile @@ -0,0 +1,7 @@ +FROM python:3.12-slim + +WORKDIR /program_1 + +COPY main.py /program_1/ + +CMD ["python", "main.py"] \ No newline at end of file diff --git a/kashin_maxim_lab_2/program_1/main.py b/kashin_maxim_lab_2/program_1/main.py new file mode 100644 index 0000000..fb87bfd --- /dev/null +++ b/kashin_maxim_lab_2/program_1/main.py @@ -0,0 +1,52 @@ +from pathlib import Path +import os + +folder_path = '/result' +folder_generator = '/data' + +def creat_folder(): + if not os.path.exists(folder_path): + os.makedirs(folder_path) + print(f"Папка `{folder_path}` создана!") + else: + print(f"Папка `{folder_path}` уже существует!") + +def delete_files_in_folder(): + for filename in os.listdir(folder_path): + file_path = os.path.join(folder_path, filename) + try: + if os.path.isfile(file_path): + os.remove(file_path) + print(f"Файл `{file_path}` удален.") + except Exception as e: + print(f'Ошибка при удалении файла {file_path}. {e}') + +def creat_file(): + file = open(f'{folder_path}/data.txt', 'w+') + print(f"Создан файл: {folder_path}/data.txt") + for count in files_count(): + file.write(f'{count} \n') + file.close() + +def files_count(): + files = [] + files_count = [] + files += os.listdir(folder_generator) + for file in files: + line_count = sum(1 for line in open(folder_generator + '/' + file)) + files_count.append(line_count) + print(f"Файл {file} имеет {line_count} количество строк") + return files_count + + + +if os.path.exists(folder_path): + print(f"Папка `{folder_path}` существует, удаляем старые файлы...") + delete_files_in_folder() + creat_file() +else: + print(f"Папка `{folder_path}` не существует, создаем...") + creat_folder() + creat_file() + +print("Скрипт на задание 1.3 (Формирует файл /var/result/data.txt так, что каждая строка файла - количество строк в файлах из каталога /var/data.) выполнен.") diff --git a/kashin_maxim_lab_2/program_2/Dockerfile b/kashin_maxim_lab_2/program_2/Dockerfile new file mode 100644 index 0000000..d5e8b05 --- /dev/null +++ b/kashin_maxim_lab_2/program_2/Dockerfile @@ -0,0 +1,7 @@ +FROM python:3.12-slim + +WORKDIR /program_2 + +COPY main.py /program_2/ + +CMD ["python", "main.py"] \ No newline at end of file diff --git a/kashin_maxim_lab_2/program_2/main.py b/kashin_maxim_lab_2/program_2/main.py new file mode 100644 index 0000000..40a423a --- /dev/null +++ b/kashin_maxim_lab_2/program_2/main.py @@ -0,0 +1,48 @@ +from pathlib import Path +import os + +folder_path = '/result' + +def creat_folder(): + if not os.path.exists(folder_path): + os.makedirs(folder_path) + print(f"Папка `{folder_path}` создана!") + else: + print(f"Папка `{folder_path}` уже существует!") + +def delete_files_in_folder(): + for filename in 'result.txt': + file_path = os.path.join(folder_path, filename) + try: + if os.path.isfile(file_path): + os.remove(file_path) + print(f"Файл `{file_path}` удален.") + except Exception as e: + print(f'Ошибка при удалении файла {file_path}. {e}') + +def creat_file(): + file = open(f'{folder_path}/result.txt', 'w+') + print(f"Создан файл: {folder_path}/result.txt") + file.write(f'{max_nubmer_file()**2}') + print(f"Максимальное число: {max_nubmer_file()}") + print(f"Максимальное число в степени 2: {max_nubmer_file()**2}") + file.close() + +def max_nubmer_file(): + max_number = 0 + for line in open(f'{folder_path}/data.txt'): + if int(line) > max_number: + max_number = int(line) + return max_number + + +if os.path.exists(folder_path): + print(f"Папка `{folder_path}` существует, удаляем старые файлы...") + delete_files_in_folder() + creat_file() +else: + print(f"Папка `{folder_path}` не существует, создаем...") + creat_folder() + creat_file() + +print("Скрипт на задание 2.1 (Ищет набольшее число из файла /var/result/data.txt и сохраняет его вторую степень в /var/result/result.txt.) выполнен.") From d9f5f75f5e7640740c4bc97e97807f196d99f85e Mon Sep 17 00:00:00 2001 From: maksim Date: Tue, 24 Sep 2024 21:07:33 +0400 Subject: [PATCH 5/5] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=D1=80=D0=B8=D0=B5=D0=B2=20=D0=B8=20readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kashin_maxim_lab_2/README.md | 61 ++++++++++++++++++++++++- kashin_maxim_lab_2/docker-compose.yml | 18 ++++---- kashin_maxim_lab_2/program_0/Dockerfile | 6 ++- kashin_maxim_lab_2/program_0/main.py | 15 ++++-- kashin_maxim_lab_2/program_1/Dockerfile | 4 ++ kashin_maxim_lab_2/program_1/main.py | 8 +++- kashin_maxim_lab_2/program_2/Dockerfile | 4 ++ kashin_maxim_lab_2/program_2/main.py | 7 ++- 8 files changed, 107 insertions(+), 16 deletions(-) diff --git a/kashin_maxim_lab_2/README.md b/kashin_maxim_lab_2/README.md index 8c9a827..bed4a4a 100644 --- a/kashin_maxim_lab_2/README.md +++ b/kashin_maxim_lab_2/README.md @@ -1 +1,60 @@ -Тут будет отчёт \ No newline at end of file +# Кашин Максим ПИбд-42 + +## Описание + +Этот проект состоит из трех отдельных программ, каждая из которых находится в своей папке (`program_0`, `program_1`, `program_2`). Каждая программа запускается в отдельном Docker-контейнере и взаимодействует с другими через общие директории, примонтированные как тома (volumes). Для управления контейнерами используется `docker-compose`. + +### Основная структура: +- **program_0**: выполняет подготовку для выполнение задач (генерация файлов) и сохраняет результат в директорию `./var/data`. +- **program_1**: использует данные из `./var/data`, генерируемые `program_0`, обрабатывает их и сохраняет результат в `./var/result`. +- **program_2**: берет результаты из `./var/result`, созданные `program_1`, и выполняет заключительную часть обработки и сохраняет результат в `./var/result`. + + +### Шаги для запуска + +1. **Запуск всех сервисов:** + + Для запуска всех программ с помощью Docker Compose, выполните следующую команду: + + ```bash + docker-compose up --build + ``` + + Это создаст и запустит все три программы в последовательности. + +2. **Работа с томами:** + + Проект использует два общих тома для обмена данными между программами: + + - `/var/data`: программа `program_0` сохраняет туда свои данные, которые потом читает `program_1`. + - `/var/result`: программа `program_1` сохраняет результаты обработки, которые затем используются в `program_2`. + +3. **Остановка сервисов:** + + Для остановки всех контейнеров выполните команду: + + ```bash + docker-compose down + ``` + +## Структура проекта + +- **program_0/**: + - `main.py`: основной код для первой программы (генерация файлов). + - `Dockerfile`: инструкция по созданию Docker-образа для `program_0`. + +- **program_1/**: + - `main.py`: основной код для второй программы (Скрипт на задание 1.3 - Формирует файл /var/result/data.txt так, что каждая строка файла - количество строк в файлах из каталога /var/data.) + - `Dockerfile`: инструкция по созданию Docker-образа для `program_1`. + +- **program_2/**: + - `main.py`: основной код для третьей программы (Скрипт на задание 2.1 - Ищет набольшее число из файла /var/result/data.txt и сохраняет его вторую степень в /var/result/result.txt.) + - `Dockerfile`: инструкция по созданию Docker-образа для `program_2`. + +- **docker-compose.yml**: конфигурация для Docker Compose, описывающая, как собирать и запускать все контейнеры, а также тома, которые они используют. + +- **.gitignore**: файл для исключения директории `var/` (временных данных и результатов). + +### Видео-отчёт + +- [Видео отчёт Кашин Максим ПИбд-42](https://disk.yandex.ru/i/NGZD2HkmZkIBww) \ No newline at end of file diff --git a/kashin_maxim_lab_2/docker-compose.yml b/kashin_maxim_lab_2/docker-compose.yml index 7d6813c..e4d9fe7 100644 --- a/kashin_maxim_lab_2/docker-compose.yml +++ b/kashin_maxim_lab_2/docker-compose.yml @@ -2,23 +2,23 @@ services: program_0: build: - context: ./program_0 + context: ./program_0 # Контекст сборки для контейнера program_0, указывающий на папку с Dockerfile volumes: - - ./var/data:/data + - ./var/data:/data # Монтирование локальной директории ./var/data в контейнер по пути /data program_1: build: - context: ./program_1 + context: ./program_1 # Контекст сборки для контейнера program_1, указывающий на папку с Dockerfile volumes: - - ./var/data:/data - - ./var/result:/result + - ./var/data:/data # Монтирование локальной директории ./var/data в контейнер по пути /data + - ./var/result:/result # Монтирование локальной директории ./var/result в контейнер по пути /result depends_on: - - program_0 + - program_0 # Зависимость от program_0; program_1 не будет запущен до завершения program_0 program_2: build: - context: ./program_2 + context: ./program_2 # Контекст сборки для контейнера program_2, указывающий на папку с Dockerfile volumes: - - ./var/result:/result + - ./var/result:/result # Монтирование локальной директории ./var/result в контейнер по пути /result depends_on: - - program_1 \ No newline at end of file + - program_1 # Зависимость от program_1; program_2 не будет запущен до завершения program_1 diff --git a/kashin_maxim_lab_2/program_0/Dockerfile b/kashin_maxim_lab_2/program_0/Dockerfile index bccadfc..1499f65 100644 --- a/kashin_maxim_lab_2/program_0/Dockerfile +++ b/kashin_maxim_lab_2/program_0/Dockerfile @@ -1,7 +1,11 @@ +# Используем базовый образ Python версии 3.12 с минимальным размером FROM python:3.12-slim +# Устанавливаем рабочую директорию внутри контейнера WORKDIR /program_0 +# Копируем файл main.py из локальной файловой системы в рабочую директорию контейнера COPY main.py /program_0/ -CMD ["python", "main.py"] \ No newline at end of file +# Определяем команду, которая будет выполняться при запуске контейнера +CMD ["python", "main.py"] diff --git a/kashin_maxim_lab_2/program_0/main.py b/kashin_maxim_lab_2/program_0/main.py index 9bc8417..f18b38d 100644 --- a/kashin_maxim_lab_2/program_0/main.py +++ b/kashin_maxim_lab_2/program_0/main.py @@ -1,37 +1,46 @@ import random import os +# Путь к папке, где будут создаваться файлы folder_path = '/data' +# Функция для создания папки, если она не существует def creat_folder(): if not os.path.exists(folder_path): - os.makedirs(folder_path) + os.makedirs(folder_path) print(f"Папка `{folder_path}` создана!") else: print(f"Папка `{folder_path}` уже существует!") +# Функция для удаления всех файлов в папке def delete_files_in_folder(): for filename in os.listdir(folder_path): file_path = os.path.join(folder_path, filename) try: if os.path.isfile(file_path): - os.remove(file_path) + os.remove(file_path) print(f"Файл `{file_path}` удален.") except Exception as e: print(f'Ошибка при удалении файла {file_path}. {e}') +# Функция для создания файлов с случайными данными def creat_file(): + # Создаем случайное количество файлов (от 10 до 20) for i in range(random.randrange(10, 20)): file = open(f'{folder_path}/file_{i}.txt', 'w+') print(f"Создан файл: {folder_path}/file_{i}.txt") + # Заполняем файл случайным количеством строк (от 10 до 50) for i in range(random.randrange(10, 50)): - file.write(f'{create_lines()} \n') + file.write(f'{create_lines()} \n') # Записываем строку данных в файл file.close() +# Функция для создания случайных числовых строк def create_lines(): + # Создаем список случайных чисел lines = [i for i in range(random.randrange(1, 50), random.randrange(50, 100), random.randrange(1, 10))] return lines +# Основная логика: проверка существования папки и выполнение операций if os.path.exists(folder_path): print(f"Папка `{folder_path}` существует, удаляем старые файлы...") delete_files_in_folder() diff --git a/kashin_maxim_lab_2/program_1/Dockerfile b/kashin_maxim_lab_2/program_1/Dockerfile index bd44d1d..7f8fac0 100644 --- a/kashin_maxim_lab_2/program_1/Dockerfile +++ b/kashin_maxim_lab_2/program_1/Dockerfile @@ -1,7 +1,11 @@ +# Используем базовый образ Python версии 3.12 с минимальным размером FROM python:3.12-slim +# Устанавливаем рабочую директорию внутри контейнера WORKDIR /program_1 +# Копируем файл main.py из локальной файловой системы в рабочую директорию контейнера COPY main.py /program_1/ +# Определяем команду, которая будет выполняться при запуске контейнера CMD ["python", "main.py"] \ No newline at end of file diff --git a/kashin_maxim_lab_2/program_1/main.py b/kashin_maxim_lab_2/program_1/main.py index fb87bfd..dbf48cb 100644 --- a/kashin_maxim_lab_2/program_1/main.py +++ b/kashin_maxim_lab_2/program_1/main.py @@ -1,9 +1,12 @@ from pathlib import Path import os +# Путь к папке, где будут создаваться файлы folder_path = '/result' +# Путь к папке, где созданы файлы folder_generator = '/data' +# Функция для создания папки, если она не существует def creat_folder(): if not os.path.exists(folder_path): os.makedirs(folder_path) @@ -11,6 +14,7 @@ def creat_folder(): else: print(f"Папка `{folder_path}` уже существует!") +# Функция для удаления всех файлов в папке def delete_files_in_folder(): for filename in os.listdir(folder_path): file_path = os.path.join(folder_path, filename) @@ -21,6 +25,7 @@ def delete_files_in_folder(): except Exception as e: print(f'Ошибка при удалении файла {file_path}. {e}') +# Функция для создания файлов def creat_file(): file = open(f'{folder_path}/data.txt', 'w+') print(f"Создан файл: {folder_path}/data.txt") @@ -28,6 +33,7 @@ def creat_file(): file.write(f'{count} \n') file.close() +# Функция для подсчета количества строк в файлах def files_count(): files = [] files_count = [] @@ -39,7 +45,7 @@ def files_count(): return files_count - +# Основная логика: проверка существования папки и выполнение операций if os.path.exists(folder_path): print(f"Папка `{folder_path}` существует, удаляем старые файлы...") delete_files_in_folder() diff --git a/kashin_maxim_lab_2/program_2/Dockerfile b/kashin_maxim_lab_2/program_2/Dockerfile index d5e8b05..5b180df 100644 --- a/kashin_maxim_lab_2/program_2/Dockerfile +++ b/kashin_maxim_lab_2/program_2/Dockerfile @@ -1,7 +1,11 @@ +# Используем базовый образ Python версии 3.12 с минимальным размером FROM python:3.12-slim +# Устанавливаем рабочую директорию внутри контейнера WORKDIR /program_2 +# Копируем файл main.py из локальной файловой системы в рабочую директорию контейнера COPY main.py /program_2/ +# Определяем команду, которая будет выполняться при запуске контейнера CMD ["python", "main.py"] \ No newline at end of file diff --git a/kashin_maxim_lab_2/program_2/main.py b/kashin_maxim_lab_2/program_2/main.py index 40a423a..b0166c3 100644 --- a/kashin_maxim_lab_2/program_2/main.py +++ b/kashin_maxim_lab_2/program_2/main.py @@ -1,8 +1,10 @@ from pathlib import Path import os +# Путь к папке, где будут создаваться файлы folder_path = '/result' +# Функция для создания папки, если она не существует def creat_folder(): if not os.path.exists(folder_path): os.makedirs(folder_path) @@ -10,6 +12,7 @@ def creat_folder(): else: print(f"Папка `{folder_path}` уже существует!") +# Функция для удаления всех файлов в папке def delete_files_in_folder(): for filename in 'result.txt': file_path = os.path.join(folder_path, filename) @@ -20,6 +23,7 @@ def delete_files_in_folder(): except Exception as e: print(f'Ошибка при удалении файла {file_path}. {e}') +# Функция для создания файлов def creat_file(): file = open(f'{folder_path}/result.txt', 'w+') print(f"Создан файл: {folder_path}/result.txt") @@ -28,6 +32,7 @@ def creat_file(): print(f"Максимальное число в степени 2: {max_nubmer_file()**2}") file.close() +# Функция для посчёта максимального числа в файле def max_nubmer_file(): max_number = 0 for line in open(f'{folder_path}/data.txt'): @@ -35,7 +40,7 @@ def max_nubmer_file(): max_number = int(line) return max_number - +# Основная логика: проверка существования папки и выполнение операций if os.path.exists(folder_path): print(f"Папка `{folder_path}` существует, удаляем старые файлы...") delete_files_in_folder()