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("Не найдены файлы")
|