Saltar al contenido

Cómo usar FTP en Python

Visión general

Este artículo le mostrará cómo puede usar FTP en Python con la ayuda del
módulo ftplib.

Ftplib

El módulo ftplib en Python le permite escribir programas Python que realizan una
variedad de trabajos FTP automatizados. Puede conectarse fácilmente a un servidor FTP para recuperar
archivos y procesarlos localmente.

Para usar el módulo ftplib en Python, primero debe importarlo a su secuencia de comandos.

Abrir una conexión

Para “abrir” una conexión al servidor FTP, debe crear el objeto.

Una vez que se establece (abre) la conexión, puede utilizar los métodos en el ftplib
módulo.

Hay varios métodos disponibles en dos versiones: uno para manejar archivos de texto y
otro para archivos binarios.

Puede navegar fácilmente por la estructura de directorios, administrar y descargar archivos.

¿Como lo uso?

Este programa se conectará primero a un servidor FTP (ftp.cwi.nl) y luego enumerará los
archivos y directorios en el directorio raíz del servidor FTP utilizando el método LIST ().

from ftplib import FTP

ftp = FTP('ftp.cwi.nl')   # connect to host, default port

ftp.login()               # user anonymous, passwd [email protected]

ftp.retrlines('LIST')     # list directory contents 

Nuestro segundo programa abre una conexión a ‘ftp.sunet.se’ como usuario ‘anónimo’
con una dirección de correo electrónico de ‘[email protected]’

Luego enumera los archivos y directorios en el servidor FTP usando dir ()
método.

La salida se guarda en la variable ‘archivos’.

Luego utilizo imprimir para ver los archivos en la pantalla.

Si quiero cambiar de directorio, solo usaría ftp.cwd (ruta) para hacerlo.

Para cerrar la conexión FTP, use el método quit ().

import ftplib

ftp = ftplib.FTP('ftp.sunet.se', 'anonymous', '[email protected]')

print "File List: "

files = ftp.dir()

print files

ftp.cwd("/pub/unix") #changing to /pub/unix

Métodos FTP habituales

FTP.connect (host[, port[, timeout]])

Conéctese al host y al puerto indicados.

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.

El número de puerto predeterminado es 21, según lo especificado por la especificación del protocolo FTP.

Rara vez es necesario especificar un número de puerto diferente.

Esta función debe llamarse solo una vez para cada instancia

No se debe llamar en absoluto si se proporcionó un host cuando se creó la instancia.

Todos los demás métodos solo se pueden utilizar después de una conexión
fue hecho.

El parámetro de tiempo de espera opcional especifica un tiempo de espera en segundos para la conexión.
intento.

Si no se pasa el tiempo de espera, se utilizará la configuración de tiempo de espera predeterminada global.

FTP.getwelcome ()

Devuelve el mensaje de bienvenida enviado por el servidor en respuesta a la conexión inicial.

Este mensaje a veces contiene exenciones de responsabilidad o información de ayuda que puede
relevante para el usuario

FTP.login ([user[, passwd[, acct]]])

Inicie sesión como el usuario especificado.

Los parámetros passwd y acct son opcionales y predeterminados para la cadena vacía.

Si no se especifica ningún usuario, el valor predeterminado es “anónimo”.

Si el usuario es ‘anónimo’, la contraseña predeterminada es ‘[email protected]’.

Esta función debe llamarse solo una vez para cada instancia, después de una conexión
Ha sido establecido.

No se debe llamar en absoluto si se proporcionó un host y un usuario cuando la instancia
fue creado.

La mayoría de los comandos FTP solo se permiten después de que el cliente haya iniciado sesión.

El parámetro acct proporciona “información contable”; pocos sistemas implementan esto.

FTP.retrbinary (comando, devolución de llamada[, maxblocksize[, rest]])

Recupere un archivo en modo de transferencia binaria.

El comando debe ser un comando RETR apropiado: ‘RETR filename’.

La función de devolución de llamada se llama para cada bloque de datos recibido, con un solo
argumento de cadena que proporciona el bloque de datos.

El argumento opcional maxblocksize especifica el tamaño máximo de fragmento para leer
el objeto de socket de bajo nivel creado para realizar la transferencia real.

Se elige un valor predeterminado razonable. resto significa lo mismo que en transfercmd ()
método.

FTP.retrlines (comando[, callback])

Recupere una lista de archivos o directorios en el modo de transferencia ASCII.

El comando debe ser un comando RETR apropiado o un comando como LIST, NLST o
MLSD.

LIST recupera una lista de archivos e información sobre esos archivos.

NLST recupera una lista de nombres de archivos.

En algunos servidores, MLSD recupera una lista de archivos e información legible por máquina
sobre esos archivos.

La función de devolución de llamada se llama para cada línea con un argumento de cadena que contiene
la línea con el CRLF final eliminado.

La devolución de llamada predeterminada imprime la línea a sys.stdout.

FTP.dir (argumento[, …])

Producir un listado de directorios como lo devuelve el comando LIST, imprimiéndolo en
salida estándar.

El argumento opcional es un directorio para listar (el valor predeterminado es el servidor actual
directorio).

Se pueden usar varios argumentos para pasar opciones no estándar al comando LIST.

Si el último argumento es una función, se utiliza como función de devolución de llamada como para
retrlines (); el valor predeterminado se imprime en sys.stdout.

Este método devuelve Ninguno.

FTP.delete (nombre de archivo)

Elimine el archivo llamado nombre de archivo del servidor.

Si tiene éxito, devuelve el texto de la respuesta; de lo contrario, genera error_perm en
errores de permiso o error_reply sobre otros errores.

FTP.cwd (nombre de ruta)

Configure el directorio actual en el servidor.

FTP.mkd (nombre de ruta)

Cree un nuevo directorio en el servidor.

FTP.pwd ()

Devuelve el nombre de la ruta del directorio actual en el servidor.

FTP.quit ()

Envíe un comando QUIT al servidor y cierre la conexión.

Esta es la forma “educada” de cerrar una conexión, pero puede generar una excepción si
el servidor responde con un error al comando QUIT.

Esto implica una llamada al método close () que hace que la instancia FTP sea inútil.
para llamadas posteriores.

FTP.close ()

Cierre la conexión unilateralmente.

Esto no debe aplicarse a una conexión ya cerrada, como después de una
llamada exitosa a quit ().

Después de esta llamada, la instancia de FTP no debería volver a utilizarse.

Después de una llamada para cerrar () o salir () no puede volver a abrir la conexión emitiendo
otro método login ()).

Para obtener más información, consulte el Documentación de Python

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.