forked from Alexey/DAS_2024_1
81 lines
2.6 KiB
Python
81 lines
2.6 KiB
Python
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() |