60 lines
2.5 KiB
Python
60 lines
2.5 KiB
Python
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)
|