DAS_2024_1/polevoy_sergey_lab_2/first/first.py

60 lines
2.5 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
import shutil
# Задаются пути к папкам и файлам
source_directory = "/var/data"
destination_directory = "/var/result"
destination_file = os.path.join(destination_directory, "data.txt")
# Создание случайных файлов для работы системы, так как заранее файлы нерационально создавать
def generate_random_files(directory):
# Создание необходимых папок, если они не существуют, если существуют, то пропускаем
os.makedirs(directory, exist_ok=True)
# Будет от 5 до 10 файлов
num_files = random.randint(5, 10)
for i in range(1, num_files + 1):
file_name = f"file_{i}.txt"
file_path = os.path.join(directory, file_name)
# Будет от 1 до 100 чисел со значением от 1 до 100
num_numbers = random.randint(1, 100)
numbers = [str(random.randint(1, 100)) for _ in range(num_numbers)]
# Числа сохраняются в файл каждое на новой строке
with open(file_path, 'w') as f:
f.write("\n".join(numbers))
print(f"Создано {num_files} файлов в директории {directory}.")
# Находится файл с самым большим количеством строк и копируется в папку назначения
def find_and_copy_longest_file(source_dir, destination_file):
if not os.path.exists(source_dir) or not os.path.isdir(source_dir):
return print ("Папки с данными не существует. Завершение выполнения")
longest_file = None
longest_lines = 0
for filename in os.listdir(source_dir):
filepath = os.path.join(source_dir, filename)
with open(filepath, mode="r") as file:
length = len(file.readlines())
if length > longest_lines:
longest_file = filepath
longest_lines = length
if longest_file is None:
return print("Папка с данными пуста. Завершение выполнения")
shutil.copy(longest_file, destination_file)
print(f"Файл \"{longest_file}\" с количеством строк {longest_lines} скопирован в {destination_file}")
if __name__ == "__main__":
generate_random_files(source_directory)
find_and_copy_longest_file(source_directory, destination_file)