Introducción a Python FTP

    Introducción

    En este tutorial, exploraremos cómo usar FTP con Python para enviar y recibir archivos de un servidor a través de TCP / IP conexiones.

    Para hacer las cosas más fáciles y abstractas, usaremos Python ftplib biblioteca que proporciona una gama de funcionalidades que facilitan el trabajo con FTP. Veremos la implementación para cargar y descargar archivos desde el servidor, así como algunas otras cosas interesantes que “ftplib” nos permite hacer.

    ¿Qué es FTP?

    FTP significa Protocolo de transferencia de archivos; se basa en la arquitectura del modelo cliente-servidor y se utiliza ampliamente. Tiene dos canales; un canal de comando y un canal de datos. El canal de comando se usa para controlar la comunicación y el canal de datos se usa para la transmisión real de archivos. Hay una amplia gama de cosas que puede hacer usando FTP, como mover, descargar, copiar archivos, etc. Lo discutiremos en una sección posterior, junto con los detalles sobre cómo hacerlo usando Python.

    Trabajando con FTP en Python

    Continuando, te alegrará saber que ftplib es una biblioteca incorporada que ya viene instalada con Python, todo lo que necesita hacer es importarla en su script y puede comenzar a usar sus funciones. Para importarlo, use el siguiente comando:

    from ftplib import FTP
    

    Después de eso, necesitamos iniciar una conexión con el servidor FTP con el que queremos abrir un enlace de comunicación. Para hacerlo, cree un ftp ejemplo:

    # Replace the example domain with your domain name
    ftp = FTP('ftp.example.com')
    

    El método anterior utiliza el puerto predeterminado, es decir, el puerto 21, para establecer una conexión con el servidor. El siguiente paso es proporcionar sus credenciales de inicio de sesión, es decir, su nombre de usuario y contraseña, para tener acceso a los archivos del servidor. Puedes usar el siguiente método para eso:

    ftp.login('your_username','your_password')
    

    Los valores predeterminados para nombre de usuario y contraseña son ‘anónimo’ y ‘[email protected]’, respectivamente. Si la conexión es exitosa, debería recibir un mensaje similar a “230 Inicio de sesión exitoso”.

    Ahora que hemos establecido una conexión con el servidor, queremos navegar al directorio donde deseamos hacer las operaciones, es decir, obtener o escribir un archivo. Para eso, cambiamos el ‘directorio de trabajo actual’ usando el siguiente comando:

    ftp.cwd('/path/to/the/directory/')
    

    Analicemos ahora algunos ejemplos básicos de cómo obtener un archivo de un directorio o escribir un archivo en un directorio. La explicación del código se proporciona en los comentarios junto a cada línea de código:

    file_name="a-filename.txt"
    my_file = open(file_name, 'wb') # Open a local file to store the downloaded file
    ftp.retrbinary('RETR ' + file_name, my_file.write, 1024) # Enter the filename to download
    

    En el retrbinary llamada anterior, 1024 significa que el archivo se descargará en bloques de 1024 bytes hasta que se transfiera todo el archivo.

    Hay una cosa más que debe hacer después de descargar o cargar un archivo: cerrar ese archivo y también cerrar la conexión FTP que había abierto. Puede hacerlo para el ejemplo anterior con las siguientes dos líneas de código:

    ftp.quit() # Terminate the FTP connection
    my_file.close() # Close the local file you had opened for downloading/storing its content
    

    Intentemos ahora subir un archivo al servidor. Además de los comandos a continuación, también tendría que volver a escribir los comandos que usamos anteriormente para abrir una conexión FTP.

    file_name="a-filename.txt"
    ftp.storbinary('STOR ' + file_name, open(file_name, rb))
    

    En los ejemplos anteriores, ‘rb’ y ‘wb’ significan “leer binario” y “escribir binario”, respectivamente.

    Funciones FTP adicionales

    Ahora que hemos discutido la implementación de las características principales, veamos algunas funciones adicionales que ftplib nos brinda.

    Listar archivos y directorios

    Para ver los archivos y carpetas en su directorio de trabajo actual, en formato de lista, ejecute el retrlines mando:

    ftp.retrlines('LIST')
    

    Crear un directorio nuevo

    Para organizar sus archivos de cierta manera, es posible que sienta la necesidad de crear un nuevo directorio en el servidor, lo que puede hacer usando una sola línea de código:

    ftp.mkd('/path/for/the/directory')
    

    La ruta sería la ubicación en la que desea que se ubique el nuevo directorio.

    Eliminar un archivo del servidor

    Eliminar un archivo en el servidor es bastante simple, solo tiene que dar el nombre del archivo como parámetro para la función de eliminación. El éxito o el fracaso de la operación se transmitirá mediante un mensaje de respuesta.

    ftp.delete('file_name_to_delete')
    

    Verificar ruta actual

    Para verificar su ruta actual, simplemente ejecute el siguiente código:

    ftp.pwd()
    

    Este comando devolverá la ruta absoluta al directorio de trabajo actual.

    Precaución

    Es importante señalar que, si bien FTP es bastante seguro en sí mismo, no se usa comúnmente para transferir información confidencial; si está transfiriendo algo así, debería optar por opciones más seguras como SFTP (FTP seguro) o SSH (Cubierta segura). Estos son los protocolos más utilizados para manejar la transmisión de datos confidenciales.

    Conclusión

    En esta publicación, discutimos qué es FTP y cómo funciona con la ayuda de diferentes ejemplos. También vimos cómo usar el módulo “ftplib” de Python para comunicarse con un servidor remoto usando FTP y vimos algunas otras funcionalidades que ofrece el módulo. Al final, también discutimos algunas alternativas más seguras al FTP, como SFTP y SSH, que se utilizan para la transferencia de información confidencial.

    Para obtener más información sobre el uso de FTP con Python, consulte la documentos ftplib oficiales o RFC 959.

     

    Etiquetas:

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *