DAS_2024_1/turner_ilya_lab_2/WorkFirst/main.py

81 lines
2.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import os
import random
# Путь к каталогу для поиска файла с наибольшим кол-вом строк
CATALOG_PATH = "/var/data"
# Путь до файла с результатом
RESULT_FILE = "/var/result/data.txt"
def find_file_with_most_lines(directory):
"""Ищет файл с наибольшим количеством строк в заданном каталоге и его подкаталогах."""
file_with_most_lines = None
max_lines = 0
for root, _, files in os.walk(directory):
for file in files:
filepath = os.path.join(root, file)
try:
with open(filepath, 'r', encoding='utf-8') as f:
line_count = sum(1 for _ in f)
if line_count > max_lines:
max_lines = line_count
file_with_most_lines = (filepath, line_count)
except (OSError, UnicodeDecodeError) as e:
print(f"Ошибка при обработке файла '{filepath}': {e}")
return file_with_most_lines
def copy_file(first, second):
"""Копирует содержимое файла first в файл second."""
try:
with open(second, "wb") as f_second, open(first, "rb") as f_first:
while chunk := f_first.read(4096):
f_second.write(chunk)
print(f"Файл '{first}' успешно скопирован в '{second}'.")
except Exception as e:
print(f"Ошибка при копировании файла '{first}': {e}")
def main():
file_with_most_lines = find_file_with_most_lines(CATALOG_PATH)
if file_with_most_lines:
first_path, _ = file_with_most_lines
second_path = RESULT_FILE
copy_file(first_path, second_path)
else:
print("Не найдены файлы")
def generate_random_numbers(filename, count):
"""Функция генерирует случайные числа и записывает их в файл"""
with open(filename, "w") as f:
for _ in range(count):
num = random.randint(0, 1000)
f.write(str(num) + "\n")
print(f"Случайные числа успешно записаны в '{filename}'.")
if __name__ == "__main__":
generate_random_numbers("/var/data/data1.txt", 25)
generate_random_numbers("/var/data/data2.txt", 30)
generate_random_numbers("/var/data/data3.txt", 27)
generate_random_numbers("/var/data/data4.txt", 12)
generate_random_numbers("/var/data/data5.txt", 19)
print("Генерация файлов завершена")
main()