DAS_2024_1/kalyshev_yan_lab_2/FirstProgram/main.py

80 lines
2.4 KiB
Python
Raw Permalink Normal View History

2024-09-29 20:05:33 +04:00
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()