73 lines
2.1 KiB
Python
73 lines
2.1 KiB
Python
import os
|
||
import random
|
||
|
||
# Путь к каталогу для поиска файла с наибольшим кол-вом строк
|
||
path = "/var/data"
|
||
|
||
# Путь до файла с результатом
|
||
resultPath = "/var/result/data.txt"
|
||
|
||
|
||
def getMaxLines(directory):
|
||
result = None
|
||
maxLines = 0
|
||
|
||
for root, _, files in os.walk(directory):
|
||
for file in files:
|
||
filepath = os.path.join(root, file)
|
||
|
||
try:
|
||
with open(filepath, 'r', encoding='utf-8') as f:
|
||
cnt = 0
|
||
for line in f:
|
||
cnt += 1
|
||
|
||
if cnt > maxLines:
|
||
maxLines = cnt
|
||
result = (filepath, cnt)
|
||
|
||
except (OSError, UnicodeDecodeError) as e:
|
||
print(f"Ошибка при обработке файла '{filepath}': {e}")
|
||
|
||
return result
|
||
|
||
|
||
def copyFile(first, second):
|
||
try:
|
||
with open(second, "wb") as second, open(first, "rb") as first:
|
||
while chunk := first.read(4096):
|
||
second.write(chunk)
|
||
|
||
print(f"Файл '{first}' успешно скопирован в '{second}'.")
|
||
|
||
except Exception as e:
|
||
print(f"Ошибка при копировании файла '{first}': {e}")
|
||
|
||
|
||
def generateRandomFiles(filename, count):
|
||
with open(filename, "w") as f:
|
||
for _ in range(count):
|
||
num = random.randint(0, 5000)
|
||
f.write(str(num) + "\n")
|
||
|
||
print(f"Случайные числа успешно записаны в '{filename}'.")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
generateRandomFiles("/var/data/file1.txt", 6)
|
||
generateRandomFiles("/var/data/file2.txt", 9)
|
||
generateRandomFiles("/var/data/file3.txt", 19)
|
||
generateRandomFiles("/var/data/file4.txt", 11)
|
||
generateRandomFiles("/var/data/file5.txt", 15)
|
||
print("Генерация файлов завершена")
|
||
|
||
maxFile = getMaxLines(path)
|
||
|
||
if maxFile:
|
||
fPath, _ = maxFile
|
||
sPath = resultPath
|
||
|
||
copyFile(fPath, sPath)
|
||
|
||
else:
|
||
print("Не найдены файлы") |