Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: Sir Korsky en 7 Enero 2016, 13:48 PM

Título: ¿Como hago? [Python]
Publicado por: Sir Korsky en 7 Enero 2016, 13:48 PM
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 (python) [Seleccionar]
import os

while True:
nombre = raw_input('Buscar: ')
os.system('cls')
if nombre == 'J.Pastore':
try:
archi=open('Jugadores/Pastore.txt','r')
lineas=archi.readlines()
for li in lineas:
print li
archi.close()
except IOError:
print 'Ocurrio un error inesperado'
elif nombre == 'C.Tevez':
try:
archi=open('Jugadores/Tevez.txt','r')
lineas=archi.readlines()
for li in lineas:
print li
archi.close()
except IOError:
print 'Ocurrio un error inesperado'
elif nombre == 'L.Messi':
try:
archi=open('Jugadores/Messi.txt','r')
lineas=archi.readlines()
for li in lineas:
print li
archi.close()
except IOError:
print 'Ocurrio un error inesperado'
elif nombre == 'E.Lavezzi':
try:
archi=open('Jugadores/Lavezzi.txt','r')
lineas=archi.readlines()
for li in lineas:
print li
archi.close()
except IOError:
print 'Ocurrio un error inesperado'
elif nombre == 'Wanchope':
try:
archi=open('Jugadores/Wanchope.txt','r')
lineas=archi.readlines()
for li in lineas:
print li
archi.close()
except IOError:
print 'Ocurrio un error inesperado'
elif nombre == 'exit':
print "Gracias por utilizar nuestro programa"
break
else:
print 'El jugador no se encuentra en el programa'
Título: Re: ¿Como hago? [Python]
Publicado por: Shell Root en 7 Enero 2016, 13:52 PM
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
Título: Re: ¿Como hago? [Python]
Publicado por: Sir Korsky en 7 Enero 2016, 16:15 PM
No entiendo como hacer el for, hice esto mira.

Código (python) [Seleccionar]
import os

while True:

nombre = raw_input('Buscar: ')
os.system('cls')

path = '/Jugadores/'

lstFiles = []

lstDir = os.walk(path)

for files in lstDir:
for fichero in files:
if nombre == lstDir:
archi=open(fichero,'r')
lineas=archi.readlines()
for li in lineas:
print li
archi.close()
Título: Re: ¿Como hago? [Python]
Publicado por: tincopasan en 8 Enero 2016, 01:45 AM
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 (python) [Seleccionar]

import os
#hice archivos con solo el apellido del jugador, ej: pastore,tevez,messi, etc
def leer():
    archivos= os.listdir()
    nombre=input("Nombre del jugador: " ) + ".txt"
    if nombre in archivos:
        mostrar = open(nombre)
        linea = mostrar.readline()
        while linea != "":
            print(linea)     
            linea = mostrar.readline()
        mostrar.close()
    else:
        print("NO se encuentra el jugador")

leer()
Título: Re: ¿Como hago? [Python]
Publicado por: Sir Korsky en 8 Enero 2016, 03:12 AM
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:
CitarIOError: [Errno 2] No such file or directory: 'Pastore.txt'

Código (python) [Seleccionar]
import os

while True:

path = 'C:\Users\Joaquin\Desktop\Programacion\Base\Jugadores'
archivos= os.listdir(path)
nombre=raw_input('Buscar:')+'.txt'
os.system('cls')
if nombre in archivos:
mostrar = open(nombre, 'r')
linea = mostrar.readline()
while linea != '':
print linea    
linea = mostrar.readline()
mostrar.close()
else:
print 'El jugador no se encuentra en el programa'





Ya solucione el problema. Gracias.