Улучшение передачи файлов по FTP с помощью отслеживания прогресса: подробное руководство

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 для улучшения мониторинга.