FTP (протокол передачи файлов) — широко используемый протокол для передачи файлов по сети. Однако при работе с большими файлами или медленными соединениями может быть полезно иметь функцию отслеживания прогресса для отслеживания статуса передачи файлов. В этой статье мы рассмотрим различные методы реализации отслеживания прогресса с помощью модуля ftplib в Python.
Метод 1: использование размера файла и переданных байт
import ftplib
import os
def ftp_progress(ftp, filename):
total_size = ftp.size(filename)
transferred = 0
def callback(data):
nonlocal transferred
transferred += len(data)
progress = transferred / total_size * 100
print(f"Progress: {progress:.2f}%")
with open(filename, "wb") as f:
ftp.retrbinary(f"RETR {filename}", callback=callback, rest=transferred)
Метод 2. Использование библиотеки tqdmдля индикатора выполнения
import ftplib
from tqdm import tqdm
def ftp_progress(ftp, filename):
total_size = ftp.size(filename)
with tqdm(total=total_size, unit="B", unit_scale=True) as pbar:
def callback(data):
pbar.update(len(data))
with open(filename, "wb") as f:
ftp.retrbinary(f"RETR {filename}", callback=callback)
Метод 3. Отслеживание прогресса с помощью процентных обновлений
import ftplib
import math
def ftp_progress(ftp, filename):
total_size = ftp.size(filename)
chunk_size = 1024 # Adjust as per your preference
chunks = math.ceil(total_size / chunk_size)
transferred_chunks = 0
def callback(data):
nonlocal transferred_chunks
transferred_chunks += 1
progress = transferred_chunks / chunks * 100
print(f"Progress: {progress:.2f}%")
with open(filename, "wb") as f:
ftp.retrbinary(f"RETR {filename}", callback=callback)
Внедрение отслеживания прогресса во время передачи файлов по FTP может значительно улучшить взаимодействие с пользователем, обеспечивая видимость статуса передачи. В этой статье мы рассмотрели три метода отслеживания прогресса с помощью модуля ftplib в Python. Первый метод вычисляет прогресс на основе размера файла и переданных байтов. Второй метод использует библиотеку tqdmдля отображения индикатора выполнения. Наконец, третий метод отслеживает прогресс, подсчитывая количество переданных фрагментов. Выберите метод, который соответствует вашим требованиям, и интегрируйте его в рабочие процессы передачи файлов по FTP для улучшения мониторинга.