80 lines
2.4 KiB
Python
80 lines
2.4 KiB
Python
|
import os
|
|||
|
import random
|
|||
|
|
|||
|
# Установите полный путь к каталогу, в котором нужно искать самый большой файл.
|
|||
|
CATALOG_PATH = "/var/data"
|
|||
|
|
|||
|
# Полный путь до файла результата.
|
|||
|
RESULT_FILE = "/var/result/data.txt"
|
|||
|
|
|||
|
|
|||
|
def find_largest_file(directory):
|
|||
|
"""Ищет самый большой по объему файл в заданном каталоге и его подкаталогах."""
|
|||
|
|
|||
|
largest_file = None
|
|||
|
max_size = 0
|
|||
|
|
|||
|
for root, _, files in os.walk(directory):
|
|||
|
for file in files:
|
|||
|
# Полный путь к текущему файлу.
|
|||
|
filepath = os.path.join(root, file)
|
|||
|
|
|||
|
try:
|
|||
|
file_size = os.stat(filepath).st_size
|
|||
|
|
|||
|
if file_size > max_size:
|
|||
|
max_size = file_size
|
|||
|
largest_file = (filepath, file_size)
|
|||
|
|
|||
|
except OSError as e:
|
|||
|
print(f"Ошибка при открытии файла '{filepath}': {e}")
|
|||
|
|
|||
|
return largest_file
|
|||
|
|
|||
|
|
|||
|
def copy_file(src, dst):
|
|||
|
"""Копирует содержимое файла src в файл dst."""
|
|||
|
|
|||
|
try:
|
|||
|
with open(dst, "wb") as f_dst, open(src, "rb") as f_src:
|
|||
|
while chunk := f_src.read(4096):
|
|||
|
f_dst.write(chunk)
|
|||
|
|
|||
|
print(f"Файл '{src}' успешно скопирован в '{dst}'.")
|
|||
|
|
|||
|
except Exception as e:
|
|||
|
print(f"Ошибка при копировании файла '{src}': {e}")
|
|||
|
|
|||
|
|
|||
|
def main():
|
|||
|
largest_file_path = find_largest_file(CATALOG_PATH)
|
|||
|
|
|||
|
if largest_file_path:
|
|||
|
src_path, _ = largest_file_path
|
|||
|
dst_path = RESULT_FILE
|
|||
|
|
|||
|
copy_file(src_path, dst_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", 50)
|
|||
|
generate_random_numbers("/var/data/data2.txt", 75)
|
|||
|
generate_random_numbers("/var/data/data3.txt", 25)
|
|||
|
print("Генерация файлов завершена.")
|
|||
|
|
|||
|
main()
|