elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Código-Python]Cliente FTP V2 - JaAViEr | 0x5d
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Código-Python]Cliente FTP V2 - JaAViEr | 0x5d  (Leído 3,646 veces)
0x5d

Desconectado Desconectado

Mensajes: 241



Ver Perfil WWW
[Código-Python]Cliente FTP V2 - JaAViEr | 0x5d
« en: 1 Mayo 2012, 11:40 am »

¡ Hola, buen día !

Hoy me tomé un par de minutos para programar un cliente FTP oficial del sitio web. Es por consola, pero vamos que ya estoy en planes de pasarlo a PyQT4. El código consta de 133 humildes líneas, intenté utilizar el máximo control de errores en el programa, para evitar que el programa salga de su curso normal... Si alguien ve que falla en algo por favor avisad aquí mismo ! , el cliente FTP por consola nos permitirá un par de acciones una vez conectado, estas son las básicas:

1.- Listar directorios / Archivos.
2.- Ingresar a un directorio.
3.- Eliminar un archivo ó directorio.
4.- Crear un directorio.
5.- Descargar un archivo remoto.
6.- Enviar un archivo local.
7.- Ver peso de un archivo remoto.
8.- Desconectar.


No creo que sea necesario describir cada una, así que los invito a leer el código :
Código
  1. # -*- coding: utf-8 -*-
  2. from ftplib import FTP
  3. while True:
  4. estado_conexion = 0
  5. try:
  6. print """
  7. ¡ Hola, bienvenido al cliente FTP - RootCodes.Com !
  8.  
  9. ¿ Qué deseas hacer ?
  10.  
  11. 1.- Conectar a servidor FTP.
  12. 2.- Creditos/Autor.
  13. 3.- Salir.
  14. """
  15. opc = input("Opcion:")
  16. if opc == 1:
  17. try:
  18. servidor = raw_input("Servidor: ")
  19. usuario = raw_input("Usuario: ")
  20. clave = raw_input("Clave: ")
  21. sesion = FTP(servidor)
  22. print sesion.getwelcome()
  23. try:
  24. estado_conexion = 1
  25. sesion.login(usuario,clave)
  26. pasive_mode = raw_input("¿ Desea activar el modo pasivo ? (s/n) > ").lower()
  27. if pasive_mode == "s":
  28. print "¡ Activando modo pasivo !"
  29. try:
  30. sesion.set_pasv(True)
  31. print "¡ Modo pasivo activado !"
  32. except:
  33. print "¡ No se pudo activar modo pasivo !"
  34. while estado_conexion!=0:
  35. print "\n\nActualmente te encuentras en:", sesion.pwd()
  36. print """
  37. 1.- Listar directorios / Archivos.
  38. 2.- Ingresar a un directorio.
  39. 3.- Eliminar un archivo ó directorio.
  40. 4.- Crear un directorio.
  41. 5.- Descargar un archivo remoto.
  42. 6.- Enviar un archivo local.
  43. 7.- Ver peso de un archivo remoto.
  44. 8.- Desconectar.
  45. """
  46. try:
  47. in_server = input("Opción: ")
  48. except:
  49. print "¡ Ingresa un número porfavor !"
  50. if in_server == 1:
  51. try:
  52. print "Lista de archivos / directorios:"
  53. sesion.dir()
  54. except:
  55. print "¡ Error al listar archivos / directorios !"
  56. elif in_server == 2:
  57. try:
  58. join_dir = raw_input("Directorio: ")
  59. sesion.cwd(join_dir)
  60. except:
  61. print "¡ Error al intentar ingresar al directorio !"
  62. elif in_server == 3:
  63. print "1.- Eliminar archivo.\n2.- Eliminar Directorio."
  64. try:
  65. que_eliminar = input("Opción: ")
  66. except:
  67. print "¡ Por favor ingresa un número válido !"
  68. if que_eliminar == 1:
  69. try:
  70. archivo_del = raw_input("Archivo a eliminar: ")
  71. sesion.delete(archivo_del)
  72. print "¡ Archivo eliminado correctamente !"
  73. except:
  74. print "¡ Error al intentar eliminar el archivo !"
  75. elif que_eliminar == 2:
  76. try:
  77. carpeta_del = raw_input("Directorio a eliminar: ")
  78. sesion.rmd(carpeta_del)
  79. print "¡ Directorio Eliminado correctamente !"
  80. except:
  81. print "¡ Error al intentar eliminar el directorio !"
  82. else:
  83. print "¡ Opción ingresada no existe !"
  84. elif in_server == 4:
  85. try:
  86. crear_carpeta = raw_input("Nombre del nuevo directorio: ")
  87. sesion.mkd(crear_carpeta)
  88. print "¡ Nuevo directorio creado con éxito !"
  89. except:
  90. print "¡ Error al intentar crear el directorio !"
  91. elif in_server == 5:
  92. try:
  93. archivo_download = raw_input("Archivo a descargar: ")
  94. sesion.retrbinary("RETR %s"%archivo_download, open(archivo_download,"wb").write)
  95. print "¡ Archivo descargado con éxito !"
  96. except:
  97. print "¡ No se pudo descargar el archivo !"
  98. elif in_server == 6:
  99. try:
  100. archivo_local = raw_input("Archivo local: ")
  101. file_local = open(archivo_local,'rb')
  102. sesion.storbinary("STOR "+archivo_local, file_local)
  103. file_local.close()
  104. print " ¡Archivo enviado con éxito !"
  105. except:
  106. print "¡ No se pudo enviar el archivo !"
  107. elif in_server == 7:
  108. try:
  109. archivo_peso = raw_input("Archivo local: ")
  110. print "El peso del archivo %s, es: %s"%(archivo_peso,sesion.size(archivo_peso))
  111. except:
  112. print "¡ No se pudo obtener el peso !"
  113. elif in_server == 8:
  114. sesion.quit()
  115. estado_conexion=0
  116. print "¡ Desconectado con éxito !"
  117. except:
  118. print "¡ No se pudo lograr la conexión !"
  119. except:
  120. print "¡ Error en los datos de conexión !"
  121.  
  122. elif opc == 2:
  123. print """
  124. Créditos -> Autor : JaAViEr || 0x5d
  125.  Twitter : @0x5d
  126.  WebSite : http://www.rootcodes.com
  127. """
  128.  
  129. elif opc == 3:
  130. print "¡ Gracias por utilizar Cliente FTP - RootCodes.Com !"
  131. break
  132. except:
  133. print "¡ Opción incorrecta !"
  134.  
¡ Espero les haya gustado !

Fuente : http://rootcodes.com/pythoncliente-ftp-rootcodes-com/

Saludos, Javier.


En línea

Runex

Desconectado Desconectado

Mensajes: 192


http://tutogramacion.blogspot.com


Ver Perfil WWW
Re: [Código-Python]Cliente FTP V2 - JaAViEr | 0x5d
« Respuesta #1 en: 1 Mayo 2012, 15:57 pm »

Bueno es ;), al final lo hicistes :).

Espero la version Pyqt4, seguro que sale bien :)


En línea

"No renunciaría al bambú.
Nunca renuciaría a ti.
No te compares con otros" "El me dijo:
El bambú tenía un propósito diferente al del
helecho, sin embargo eran necesarios y
hacían del bosque un lugar hermoso".
0x5d

Desconectado Desconectado

Mensajes: 241



Ver Perfil WWW
Re: [Código-Python]Cliente FTP V2 - JaAViEr | 0x5d
« Respuesta #2 en: 3 Mayo 2012, 21:47 pm »

Bueno es ;), al final lo hicistes :).

Espero la version Pyqt4, seguro que sale bien :)
El source original lo perdí, así que lo estoy empezando casi de 0 !
En línea

polmadur

Desconectado Desconectado

Mensajes: 47


Ver Perfil
Re: [Código-Python]Cliente FTP V2 - JaAViEr | 0x5d
« Respuesta #3 en: 4 Mayo 2012, 10:09 am »

una pregunta, que diferencia hay entre input y raw_input? Yo siempre he utilizado el segundo.
En línea

Arnau27

Desconectado Desconectado

Mensajes: 46



Ver Perfil WWW
Re: [Código-Python]Cliente FTP V2 - JaAViEr | 0x5d
« Respuesta #4 en: 4 Mayo 2012, 16:37 pm »

una pregunta, que diferencia hay entre input y raw_input? Yo siempre he utilizado el segundo.
Bueno, con raw_input se pueden manejar errores, en cambio con input no. Aunque a partir de la version 3.0 de python, como bien sabe 0x5d, raw_input desaparece i solo queda input que adquiere la capacidad de manejar errores.

Edito: 0x5d Aprovecho para felicitarte por tu trabajo con python.
« Última modificación: 4 Mayo 2012, 16:39 pm por Arnau27 » En línea

La confianza es la base de la elegancia.
0x5d

Desconectado Desconectado

Mensajes: 241



Ver Perfil WWW
Re: [Código-Python]Cliente FTP V2 - JaAViEr | 0x5d
« Respuesta #5 en: 4 Mayo 2012, 17:25 pm »

Bueno, con raw_input se pueden manejar errores, en cambio con input no. Aunque a partir de la version 3.0 de python, como bien sabe 0x5d, raw_input desaparece i solo queda input que adquiere la capacidad de manejar errores.

Edito: 0x5d Aprovecho para felicitarte por tu trabajo con python.
¡ Muchas Gracias ! aunque mis trabajos no son nada del otro mundo por ahora :c

una pregunta, que diferencia hay entre input y raw_input? Yo siempre he utilizado el segundo.
raw_input() se utiliza para insertar valores alfanuméricos, mientras que el
input() lo utilizamos solo para valores numéricos :D

Eso en las versiones < 3.0 de Python

¡ Saludos, Javier !
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python]Localizador IP - JaAViEr(0x5d)
Scripting
0x5d 2 3,583 Último mensaje 30 Diciembre 2011, 15:11 pm
por Novlucker
[Código-Python-Android]Calculadora por secuencia - JaAViEr(0x5d)
Scripting
0x5d 0 3,365 Último mensaje 27 Diciembre 2011, 02:22 am
por 0x5d
[Código-Python]Gestor de pago de cuentas - JaAViEr|0x5d
Scripting
0x5d 5 3,450 Último mensaje 21 Mayo 2012, 01:18 am
por 0x5d
[Proyecto-Python]Navegar por consola en foros SMF - JaAViEr (0x5d)
Scripting
0x5d 2 2,681 Último mensaje 8 Diciembre 2012, 23:06 pm
por 0x5d
[Código-Python]Sucesión Fibonacci - Versión Reducida - JaAViEr (0x5d)
Scripting
0x5d 0 2,217 Último mensaje 10 Enero 2013, 22:47 pm
por 0x5d
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines