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.
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'
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
No entiendo como hacer el for, hice esto mira.
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()
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
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()
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'
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.