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


 


Tema destacado: [AIO elhacker.NET 2015] Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting (Moderador: Eleкtro)
| | |-+  ¿Como hago? [Python]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Como hago? [Python]  (Leído 773 veces)
Sir Korsky

Desconectado Desconectado

Mensajes: 6


La vida sin problemas es matar el tiempo a lo bobo


Ver Perfil
¿Como hago? [Python]
« en: 7 Enero 2016, 13:48 »

Quisiera saber como hago para que al ingresar determinado nombre me busque el .txt que lleva ese nombre y me lo imprima en la pantalla. Les dejo el código que hice, lo quiero acortar para que directamente me busque el .txt que ingreso en la variable nombre.

Código
  1. import os
  2.  
  3. while True:
  4. nombre = raw_input('Buscar: ')
  5. os.system('cls')
  6. if nombre == 'J.Pastore':
  7. try:
  8. archi=open('Jugadores/Pastore.txt','r')
  9. lineas=archi.readlines()
  10. for li in lineas:
  11. print li
  12. archi.close()
  13. except IOError:
  14. print 'Ocurrio un error inesperado'
  15. elif nombre == 'C.Tevez':
  16. try:
  17. archi=open('Jugadores/Tevez.txt','r')
  18. lineas=archi.readlines()
  19. for li in lineas:
  20. print li
  21. archi.close()
  22. except IOError:
  23. print 'Ocurrio un error inesperado'
  24. elif nombre == 'L.Messi':
  25. try:
  26. archi=open('Jugadores/Messi.txt','r')
  27. lineas=archi.readlines()
  28. for li in lineas:
  29. print li
  30. archi.close()
  31. except IOError:
  32. print 'Ocurrio un error inesperado'
  33. elif nombre == 'E.Lavezzi':
  34. try:
  35. archi=open('Jugadores/Lavezzi.txt','r')
  36. lineas=archi.readlines()
  37. for li in lineas:
  38. print li
  39. archi.close()
  40. except IOError:
  41. print 'Ocurrio un error inesperado'
  42. elif nombre == 'Wanchope':
  43. try:
  44. archi=open('Jugadores/Wanchope.txt','r')
  45. lineas=archi.readlines()
  46. for li in lineas:
  47. print li
  48. archi.close()
  49. except IOError:
  50. print 'Ocurrio un error inesperado'
  51. elif nombre == 'exit':
  52. print "Gracias por utilizar nuestro programa"
  53. break
  54. else:
  55. print 'El jugador no se encuentra en el programa'


En línea

Shell Root
Colaborador
***
Desconectado Desconectado

Mensajes: 3.846



Ver Perfil WWW
Re: ¿Como hago? [Python]
« Respuesta #1 en: 7 Enero 2016, 13:52 »

Primero tendrías que listar los archivos del directorio donde estan ubicados los archivos, y empezar a recorrerlos con un for hasta encontrar el nombre del archivo para luego mostrarlo


En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
Sir Korsky

Desconectado Desconectado

Mensajes: 6


La vida sin problemas es matar el tiempo a lo bobo


Ver Perfil
Re: ¿Como hago? [Python]
« Respuesta #2 en: 7 Enero 2016, 16:15 »

No entiendo como hacer el for, hice esto mira.

Código
  1. import os
  2.  
  3. while True:
  4.  
  5. nombre = raw_input('Buscar: ')
  6. os.system('cls')
  7.  
  8. path = '/Jugadores/'
  9.  
  10. lstFiles = []
  11.  
  12. lstDir = os.walk(path)
  13.  
  14. for files in lstDir:
  15. for fichero in files:
  16. if nombre == lstDir:
  17. archi=open(fichero,'r')
  18. lineas=archi.readlines()
  19. for li in lineas:
  20. print li
  21. archi.close()
En línea

tincopasan


Desconectado Desconectado

Mensajes: 967


No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: ¿Como hago? [Python]
« Respuesta #3 en: 8 Enero 2016, 01:45 »

1) imagina que tuvieras 500 jugadores, ¿cuántas líneas de código tendrías?, o sea me parece muy mal un if por cada uno
2) una forma simple de saber los archivos de un directorio es justamente con listdir del módulo os
3) no uso tu script sino que hago uno simple para que lo adaptes
4) espero que se me entienda
Código
  1. import os
  2. #hice archivos con solo el apellido del jugador, ej: pastore,tevez,messi, etc
  3. def leer():
  4.    archivos= os.listdir()
  5.    nombre=input("Nombre del jugador: " ) + ".txt"
  6.    if nombre in archivos:
  7.        mostrar = open(nombre)
  8.        linea = mostrar.readline()
  9.        while linea != "":
  10.            print(linea)    
  11.            linea = mostrar.readline()
  12.        mostrar.close()
  13.    else:
  14.        print("NO se encuentra el jugador")
  15.  
  16. leer()
  17.  
En línea

Sir Korsky

Desconectado Desconectado

Mensajes: 6


La vida sin problemas es matar el tiempo a lo bobo


Ver Perfil
Re: ¿Como hago? [Python]
« Respuesta #4 en: 8 Enero 2016, 03:12 »

Mira, implemente el codigo ese, pero me marca que el archivo no se encuentra en el directorio, pero si esta el archivo .txt

Me marca la linea 10 y me tira este error:
Citar
IOError: [Errno 2] No such file or directory: 'Pastore.txt'

Código
  1. import os
  2.  
  3. while True:
  4.  
  5. path = 'C:\Users\Joaquin\Desktop\Programacion\Base\Jugadores'
  6. archivos= os.listdir(path)
  7. nombre=raw_input('Buscar:')+'.txt'
  8. os.system('cls')
  9. if nombre in archivos:
  10. mostrar = open(nombre, 'r')
  11. linea = mostrar.readline()
  12. while linea != '':
  13. print linea    
  14. linea = mostrar.readline()
  15. mostrar.close()
  16. else:
  17. print 'El jugador no se encuentra en el programa'



 Ya solucione el problema. Gracias.
« Última modificación: 8 Enero 2016, 06:48 por simorg » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines