Introducción a Python FTP

I

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.

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad