Introducción a Phyton FTP

En este tutorial, exploraremos cómo usar FTP con Python para enviar y recibir archivos desde un servidor a través de conexiones TCP/IP. Para hacer las cosas más fáciles y más...

Introducción

En este tutorial, exploraremos cómo usar FTP con Python para enviar y recibir archivos desde un servidor a través de [TCP/IP](https://en .wikipedia.org/wiki/Internet_protocol_suite) conexiones.

Para hacer las cosas más fáciles y abstractas, usaremos la biblioteca ftplib de Python, que proporciona una variedad de funcionalidades que facilitan la trabajar con FTP. Veremos la implementación para cargar y descargar archivos desde el servidor, así como algunas otras cosas geniales 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 es ampliamente utilizado. 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. Discutiremos eso en una sección posterior, junto con los detalles sobre cómo hacerlo usando Python.

Trabajando con FTP en Python

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

1
from ftplib import FTP

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

1
2
# 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 acceder a los archivos en el servidor. Puedes usar el siguiente método para eso:

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

Los valores predeterminados para el nombre de usuario y la contraseña son 'anónimo' y '[correo electrónico protegido]', 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 realizar operaciones, es decir, obtener o escribir un archivo. Para eso, cambiamos el 'directorio de trabajo actual' usando el siguiente comando :

1
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:

1
2
3
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 la llamada retrbinary anterior, el 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 hacer eso para el ejemplo anterior con las siguientes dos líneas de código:

1
2
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.

1
2
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.

Funcionalidades FTP adicionales

Ahora que hemos discutido la implementación de las funciones principales, veamos algunas funciones adicionales que nos proporciona ftplib.

Listar archivos y directorios

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

1
ftp.retrlines('LIST')

Crear un nuevo directorio

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

1
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 a la función de eliminación. El éxito o el fracaso de la operación se transmitirá mediante un mensaje de respuesta.

1
ftp.delete('file_name_to_delete')

Comprobar la ruta actual

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

1
ftp.pwd()

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

Precaución

Es importante tener en cuenta que, si bien el FTP es bastante seguro en sí mismo, no se usa comúnmente para transferir información confidencial; si está transfiriendo algo así, entonces debería buscar opciones más seguras como SFTP (Secure FTP) o [SSH](https://en .wikipedia.org/wiki/Secure_Shell) (Secure Shell). 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 comunicarnos 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 a 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 los documentos oficiales de ftplib o [RFC 959](https://tools.ietf .org/html/rfc959.html).

Licensed under CC BY-NC-SA 4.0