¿Como hago? [Python]

Iniciado por Sir Korsky, 7 Enero 2016, 13:48 PM

0 Miembros y 1 Visitante están viendo este tema.

Sir Korsky

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'

Shell Root

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
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

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()

tincopasan

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()

Sir Korsky

#4
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.