Posterior a de una extensa selección de datos hemos podido solucionar este enigma que tienen muchos usuarios. Te dejamos la respuesta y esperamos que te sea de mucha ayuda.
Código fuente:Lib / ftplib.py
Este módulo define la clase FTP
y algunos artículos relacionados. los FTP
class implementa el lado del cliente del protocolo FTP. Puede usar esto para escribir programas Python que realicen una variedad de trabajos FTP automatizados, como duplicar otros servidores FTP. También es utilizado por el módulo urllib.request
para manejar URL que utilizan FTP. Para obtener más información sobre FTP (Protocolo de transferencia de archivos), consulte Internet. RFC 959.
La codificación predeterminada es UTF-8, siguiendo RFC 2640.
Aquí hay una sesión de muestra usando el ftplib
módulo:
>>>from ftplib import FTP >>> ftp = FTP('ftp.us.debian.org')# connect to host, default port>>> ftp.login()# user anonymous, passwd [email protected]'230 Login successful.'>>> ftp.cwd('debian')# change into "debian" directory>>> ftp.retrlines('LIST')# list directory contents-rw-rw-r--1117611761063 Jun 1510:18 README ... drwxr-sr-x 5117611764096 Dec 192000 pool drwxr-sr-x 4117611764096 Nov 172008 project drwxr-xr-x 3117611764096 Oct 102012 tools '226 Directory send OK.'>>>withopen('README','wb')as fp:>>> ftp.retrbinary('RETR README', fp.write)'226 Transfer complete.'>>> ftp.quit()
El módulo define los siguientes elementos:
class ftplib.FTP(host='', user='', passwd='', acct='', timeout=None, source_address=None, *, encoding='utf-8')
-
Devuelve una nueva instancia del
FTP
clase. Cuando anfitrión se da, la llamada al métodoconnect(host)
está hecho. Cuando usuario se da, además la llamada al métodologin(user, passwd, acct)
se hace (donde passwd y cuenta predeterminado a la cadena vacía cuando no se proporciona). El opcional se acabó el tiempo El parámetro especifica un tiempo de espera en segundos para bloquear operaciones como el intento de conexión (si no se especifica, se utilizará la configuración de tiempo de espera global predeterminada). Dirección de la fuente es una tupla de 2(host, port)
para que el socket se vincule como su dirección de origen antes de conectarse. los codificacion El parámetro especifica la codificación de directorios y nombres de archivos.los
FTP
la clase apoya elwith
declaración, por ejemplo:>>>from ftplib import FTP >>>with FTP("ftp1.at.proftpd.org")as ftp:... ftp.login()... ftp.dir()...'230 Anonymous login ok, restrictions apply.' dr-xr-xr-x 9 ftp ftp 154 May 610:43. dr-xr-xr-x 9 ftp ftp 154 May 610:43.. dr-xr-xr-x 5 ftp ftp 4096 May 610:43 CentOS dr-xr-xr-x 3 ftp ftp 18 Jul 102008 Fedora >>>
Modificado en la versión 3.2: Soporte para el
with
se agregó una declaración.Modificado en la versión 3.3: Dirección de la fuente se agregó el parámetro.
Modificado en la versión 3.9: Si el se acabó el tiempo el parámetro se establece en cero, generará un
ValueError
para evitar la creación de un enchufe sin bloqueo. los codificacion se agregó el parámetro, y el predeterminado se cambió de Latin-1 a UTF-8 para seguir RFC 2640.
class ftplib.FTP_TLS(host='', user='', passwd='', acct='', keyfile=None, certfile=None, context=None, timeout=None, source_address=None, *, encoding='utf-8')
-
A
FTP
subclase que agrega soporte TLS a FTP como se describe en RFC 4217. Conéctese como de costumbre al puerto 21 asegurando implícitamente la conexión de control FTP antes de autenticarse. Asegurar la conexión de datos requiere que el usuario la solicite explícitamente llamando alprot_p()
método. contexto es unssl.SSLContext
objeto que permite agrupar opciones de configuración SSL, certificados y claves privadas en una única estructura (potencialmente duradera). Por favor lee Consideraciones de Seguridad para conocer las mejores prácticas.archivo de clave y certfile son una alternativa heredada a contexto – Pueden apuntar a archivos de cadena de certificado y clave privada con formato PEM (respectivamente) para la conexión SSL.
Nuevo en la versión 3.2.
Modificado en la versión 3.3: Dirección de la fuente se agregó el parámetro.
Modificado en la versión 3.4: La clase ahora admite la verificación del nombre de host con
ssl.SSLContext.check_hostname
y Indicación del nombre del servidor (verssl.HAS_SNI
).En desuso desde la versión 3.6: archivo de clave y certfile están en desuso a favor de contexto. Por favor use
ssl.SSLContext.load_cert_chain()
en su lugar, o dejarssl.create_default_context()
seleccione los certificados CA de confianza del sistema para usted.Modificado en la versión 3.9: Si el se acabó el tiempo el parámetro se establece en cero, generará un
ValueError
para evitar la creación de un enchufe sin bloqueo. los codificacion se agregó el parámetro, y el predeterminado se cambió de Latin-1 a UTF-8 para seguir RFC 2640.Aquí hay una sesión de muestra usando el
FTP_TLS
clase:>>> ftps = FTP_TLS('ftp.pureftpd.org')>>> ftps.login()'230 Anonymous user logged in'>>> ftps.prot_p()'200 Data protection level set to "private"'>>> ftps.nlst()['6jack','OpenBSD','antilink','blogbench','bsdcam','clockspeed','djbdns-jedi','docs','eaccelerator-jedi','favicon.ico','francotone','fugu','ignore','libpuzzle','metalog','minidentd','misc','mysql-udf-global-user-variables','php-jenkins-hash','php-skein-hash','php-webdav','phpaudit','phpbench','pincaster','ping','posto','pub','public','public_keys','pure-ftpd','qscan','qtc','sharedance','skycache','sound','tmp','ucarp']
exception ftplib.error_reply
-
Se genera una excepción cuando se recibe una respuesta inesperada del servidor.
exception ftplib.error_temp
-
Se genera una excepción cuando se recibe un código de error que significa un error temporal (códigos de respuesta en el rango 400–499).
exception ftplib.error_perm
-
Se genera una excepción cuando se recibe un código de error que significa un error permanente (códigos de respuesta en el rango 500–599).
exception ftplib.error_proto
-
Se genera una excepción cuando se recibe una respuesta del servidor que no se ajusta a las especificaciones de respuesta del Protocolo de transferencia de archivos, es decir, comienza con un dígito en el rango 1–5.
ftplib.all_errors
-
El conjunto de todas las excepciones (como una tupla) que los métodos de
FTP
pueden surgir instancias como resultado de problemas con la conexión FTP (a diferencia de los errores de programación cometidos por la persona que llama). Este conjunto incluye las cuatro excepciones enumeradas anteriormente, así comoOSError
yEOFError
.
Ver también
Module
netrc
-
Analizador para el
.netrc
formato de archivo. El archivo.netrc
Los clientes FTP suelen utilizarla para cargar la información de autenticación del usuario antes de preguntarle al usuario.
Objetos FTP
Hay varios métodos disponibles en dos versiones: uno para manejar archivos de texto y otro para archivos binarios. Estos se nombran por el comando que se utiliza seguido de lines
para la versión de texto o binary
para la versión binaria.
FTP
instancias tienen los siguientes métodos:
FTP.set_debuglevel(level)
-
Establece el nivel de depuración de la instancia. Esto controla la cantidad de salida de depuración impresa. El valor por defecto,
0
, no produce salida de depuración. Un valor de1
produce una cantidad moderada de salida de depuración, generalmente una sola línea por solicitud. Un valor de2
o superior produce la cantidad máxima de salida de depuración, registrando cada línea enviada y recibida en la conexión de control.
FTP.connect(host='', port=0, timeout=None, source_address=None)
-
Conéctese al host y al puerto indicados. 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 que se haya realizado una conexión. El opcional se acabó el tiempo El parámetro especifica un tiempo de espera en segundos para el intento de conexión. Si no se acabó el tiempo se pasa, se utilizará la configuración de tiempo de espera predeterminada global. Dirección de la fuente es una tupla de 2(host, port)
para que el socket se vincule como su dirección de origen antes de conectarse.Plantea un evento de auditoría
ftplib.connect
con argumentosself
,host
,port
.Modificado en la versión 3.3: Dirección de la fuente se agregó el parámetro.
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 ser relevante para el usuario).
FTP.login(user='anonymous', passwd='', acct='')
-
Inicie sesión como dado usuario. los passwd y cuenta los parámetros son opcionales y predeterminados para la cadena vacía. Si no usuario se especifica, por defecto es
'anonymous'
. Si usuario es'anonymous'
, el valor por defecto passwd es'[email protected]'
. Esta función debe llamarse solo una vez para cada instancia, después de que se haya establecido una conexión; no se debe llamar en absoluto si se proporcionaron un host y un usuario cuando se creó la instancia. La mayoría de los comandos FTP solo se permiten después de que el cliente haya iniciado sesión. cuenta el parámetro proporciona “información contable”; pocos sistemas implementan esto.
FTP.abort()
-
Abortar una transferencia de archivos en curso. Usar esto no siempre funciona, pero vale la pena intentarlo.
FTP.sendcmd(cmd)
-
Envíe una cadena de comando simple al servidor y devuelva la cadena de respuesta.
Plantea un evento de auditoría
ftplib.sendcmd
con argumentosself
,cmd
.
FTP.voidcmd(cmd)
-
Envíe una cadena de comando simple al servidor y maneje la respuesta. No devuelve nada si se recibe un código de respuesta correspondiente al éxito (códigos en el rango 200-299). Aumentar
error_reply
de lo contrario.Plantea un evento de auditoría
ftplib.sendcmd
con argumentosself
,cmd
.
FTP.retrbinary(cmd, callback, blocksize=8192, rest=None)
-
Recupere un archivo en modo de transferencia binaria. cmd debe ser un apropiado
RETR
mando:'RETR filename'
. los llamar de vuelta Se llama a la función para cada bloque de datos recibido, con un argumento de un solo byte que proporciona el bloque de datos. El opcional tamaño de bloque El argumento especifica el tamaño máximo de fragmento para leer en el objeto de socket de bajo nivel creado para realizar la transferencia real (que también será el tamaño más grande de los bloques de datos pasados a llamar de vuelta). Se elige un valor predeterminado razonable. descansar significa lo mismo que en eltransfercmd()
método.
FTP.retrlines(cmd, callback=None)
-
Recuperar una lista de archivos o directorios con la codificación especificada por el codificacion parámetro en la inicialización. cmd debe ser un apropiado
RETR
comando (verretrbinary()
) o un comando comoLIST
oNLST
(generalmente solo la cuerda'LIST'
).LIST
recupera una lista de archivos e información sobre esos archivos.NLST
recupera una lista de nombres de archivos. los llamar de vuelta Se llama a la función para cada línea con un argumento de cadena que contiene la línea con el CRLF final eliminado. El valor por defecto llamar de vuelta imprime la línea asys.stdout
.
FTP.set_pasv(val)
-
Habilite el modo “pasivo” si val es verdadero; de lo contrario, desactive el modo pasivo. El modo pasivo está activado de forma predeterminada.
FTP.storbinary(cmd, fp, blocksize=8192, callback=None, rest=None)
-
Almacene un archivo en modo de transferencia binaria. cmd debe ser un apropiado
STOR
mando:"STOR filename"
. fp es un objeto de archivo (abierto en modo binario) que se lee hasta EOF usando suread()
método en bloques de tamaño tamaño de bloque para proporcionar los datos que se almacenarán. los tamaño de bloque El argumento predeterminado es 8192. llamar de vuelta es un único parámetro opcional invocable que se llama en cada bloque de datos después de su envío. descansar significa lo mismo que en eltransfercmd()
método.Modificado en la versión 3.2: descansar parámetro agregado.
FTP.storlines(cmd, fp, callback=None)
-
Almacene un archivo en modo de línea. cmd debe ser un apropiado
STOR
comando (verstorbinary()
). Las líneas se leen hasta EOF del objeto de archivofp (abierto en modo binario) usando sureadline()
método para proporcionar los datos que se almacenarán. llamar de vuelta es un único parámetro opcional invocable que se llama en cada línea después de su envío.
FTP.transfercmd(cmd, rest=None)
-
Inicie una transferencia a través de la conexión de datos. Si la transferencia está activa, envíe un
EPRT
oPORT
comando y el comando de transferencia especificado por cmdy acepta la conexión. Si el servidor es pasivo, envíe unEPSV
oPASV
comando, conéctese a él e inicie el comando de transferencia. De cualquier manera, devuelva el zócalo para la conexión.Si es opcional descansar se da, un
REST
El comando se envía al servidor, pasando descansar como argumento. descansar suele ser un desplazamiento de bytes en el archivo solicitado, que le indica al servidor que reinicie el envío de los bytes del archivo en el desplazamiento solicitado, omitiendo los bytes iniciales. Sin embargo, tenga en cuenta que eltransfercmd()
el método convierte descansar a una cuerda con el codificacion parámetro especificado en la inicialización, pero no se realiza ninguna verificación en el contenido de la cadena. Si el servidor no reconoce elREST
comando, unerror_reply
se planteará una excepción. Si esto sucede, simplemente llametransfercmd()
sin un descansar argumento.
FTP.ntransfercmd(cmd, rest=None)
-
Igual que
transfercmd()
, pero devuelve una tupla de la conexión de datos y el tamaño esperado de los datos. Si no se pudo calcular el tamaño esperado,None
será devuelto como el tamaño esperado. cmd y descansar significa lo mismo que entransfercmd()
.
FTP.mlsd(path="", facts=[])
-
Enumere un directorio en un formato estandarizado usando
MLSD
comandoRFC 3659). Si sendero se omite se asume el directorio actual. hechos es una lista de cadenas que representan el tipo de información deseada (p. ej.["type", "size", "perm"]
). Devuelve un objeto generador que produce una tupla de dos elementos por cada archivo encontrado en la ruta. El primer elemento es el nombre del archivo, el segundo es un diccionario que contiene datos sobre el nombre del archivo. El contenido de este diccionario puede estar limitado por hechos argumento, pero no se garantiza que el servidor devuelva todos los hechos solicitados.Nuevo en la versión 3.3.
FTP.nlst(argument[, ...])
-
Devuelve una lista de nombres de archivos tal como los devuelve el
NLST
mando. El opcional argumento es un directorio para listar (el predeterminado es el directorio del servidor actual). Se pueden utilizar varios argumentos para pasar opciones no estándar alNLST
mando.Nota
Si su servidor admite el comando,
mlsd()
ofrece una mejor API.
FTP.dir(argument[, ...])
-
Producir un listado de directorio como lo devuelve el
LIST
comando, imprimiéndolo en salida estándar. El opcional argumento es un directorio para listar (el predeterminado es el directorio del servidor actual). Se pueden utilizar varios argumentos para pasar opciones no estándar alLIST
mando. Si el último argumento es una función, se utiliza como llamar de vuelta funcionar como pararetrlines()
; las impresiones predeterminadas asys.stdout
. Este método devuelveNone
.Nota
Si su servidor admite el comando,
mlsd()
ofrece una mejor API.
FTP.rename(fromname, toname)
-
Renombrar archivo fromname en el servidor para nombrar.
FTP.delete(filename)
-
Eliminar el archivo llamado nombre del archivo desde el servidor. Si tiene éxito, devuelve el texto de la respuesta; de lo contrario, aumenta
error_perm
sobre errores de permiso oerror_reply
sobre otros errores.
FTP.cwd(pathname)
-
Configure el directorio actual en el servidor.
FTP.mkd(pathname)
-
Cree un nuevo directorio en el servidor.
FTP.pwd()
-
Devuelve el nombre de la ruta del directorio actual en el servidor.
FTP.rmd(dirname)
-
Eliminar el directorio llamado dirname en el servidor.
FTP.size(filename)
-
Solicite el tamaño del archivo nombrado nombre del archivo en el servidor. En caso de éxito, el tamaño del archivo se devuelve como un número entero, de lo contrario
None
es regresado. Tenga en cuenta que elSIZE
El comando no está estandarizado, pero es compatible con muchas implementaciones de servidor comunes.
FTP.quit()
-
Enviar una
QUIT
comando 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 alQUIT
mando. Esto implica una llamada a laclose()
método que hace que elFTP
instancia inútil para llamadas posteriores (ver más abajo).
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 alFTP
La instancia no debe usarse más (después de una llamada aclose()
oquit()
no puede reabrir la conexión emitiendo otrologin()
método).
Objetos FTP_TLS
FTP_TLS
la clase hereda de FTP
, definiendo estos objetos adicionales:
FTP_TLS.ssl_version
-
La versión de SSL a usar (por defecto es
ssl.PROTOCOL_SSLv23
).
FTP_TLS.auth()
-
Configure una conexión de control segura mediante TLS o SSL, según lo que se especifique en la
ssl_version
atributo.Modificado en la versión 3.4: El método ahora admite la verificación del nombre de host con
ssl.SSLContext.check_hostname
y Indicación del nombre del servidor (verssl.HAS_SNI
).
FTP_TLS.ccc()
-
Revertir el canal de control a texto sin formato. Esto puede resultar útil para aprovechar los cortafuegos que saben cómo manejar NAT con FTP no seguro sin abrir puertos fijos.
Nuevo en la versión 3.3.
FTP_TLS.prot_p()
-
Configure una conexión de datos segura.
FTP_TLS.prot_c()
-
Configure la conexión de datos de texto sin cifrar.
Comentarios y valoraciones del artículo
Eres capaz de corroborar nuestro cometido escribiendo un comentario o valorándolo te damos la bienvenida.