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 *