DAS_2024_1/polevoy_sergey_lab_2/first/first.py

60 lines
2.5 KiB
Python
Raw Normal View History

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)