Python - NameError: name 'archivos_selec' is not defined

   
Vista:

NameError: name 'archivos_selec' is not defined

Publicado por Anishoond (4 intervenciones) el 22/10/2017 19:58:52
Buenas tardes, estoy escribiendo un codigo con funciones que entre a una ruta de trabajo establecida y escoja todos los archivos con extension txt y csv y los enliste, para luego el usuario escoja cual desee graficar, cuando defino la funcion menu no se que argumentos utilizar en los parametros y ende me arroja un error que es en la penultima linea que es "NameError: name 'archivos_selec' is not defined", muchas gracias y aqui esta el codigo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
mi_ruta=os.getcwd()
lista_archivos=os.listdir(mi_ruta)
 
def ruta(mi_ruta,lista_archivos):
    archivos_selec=[]
    for file in lista_archivos:
        if file.endswith(".txt") or file.endswith(".csv"):
            archivos_selec.append(file)
    archivos_selec.sort()
    alfabeto="abcdefghijklmnopqrstuvwxyz"
    for i in range(len(archivos_selec)):
        print(alfabeto[i]+")",archivos_selec[i])
 
from matplotlib import pyplot as plt
def menu(alfabeto,archivos_selec):
    n="."
    while not n in alfabeto[:len(archivos_selec)]:
        print("digite una letra entre a y",alfabeto[len(archivos_selec)-1])
        n=input("digite la letra: ")
    n=alfabeto.index(n)
    print(archivos_selec[n])
 
file=open(archivos_selec[n])
line=file.readline()
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

NameError: name 'archivos_selec' is not defined

Publicado por José María info@g5server.com (72 intervenciones) el 22/10/2017 20:26:00
Hola

La variable 'archivos_selec' la tienes definida dentro de la función 'def ruta', por lo que fuera de ella no la encuentra. La estás llamando desde la fila 23 que está fuera de la citada función.

Consejos:
- Las filas 5 y 10 deben estar fuera de las funciones para que puedan ser leídas desde cualquier lugar.
- Las funciones han de ser llamadas para que hagan algo. No veo ninguna llamada a ellas.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

NameError: name 'archivos_selec' is not defined

Publicado por Anishoond (4 intervenciones) el 22/10/2017 20:55:20
Hola

Segui tus consejos y ya no sigue apareciendo el error de archivos_selec, ahora aparece que "NameError: name 'n' is not defined" y una duda, en tu consejo me decis que ponga esas variables por fuera de la funcion, esas variables las tengo que poner dentro de los parametros para que las coja? y la otra es que esas variables se podrian llamar variables globales?
Aqui esta el codigo con tus modificaciones

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
mi_ruta=os.getcwd()
lista_archivos=os.listdir(mi_ruta)
archivos_selec=[]
alfabeto="abcdefghijklmnopqrstuvwxyz"
def ruta(mi_ruta,lista_archivos,archivos_selec,alfabeto):
    for file in lista_archivos:
        if file.endswith(".txt") or file.endswith(".csv"):
            archivos_selec.append(file)
    archivos_selec.sort()
    for i in range(len(archivos_selec)):
        print(alfabeto[i]+")",archivos_selec[i])
ruta(mi_ruta,lista_archivos,archivos_selec,alfabeto)
from matplotlib import pyplot as plt
def menu(alfabeto,archivos_selec):
    n="."
    while not n in alfabeto[:len(archivos_selec)]:
        print("digite una letra entre a y",alfabeto[len(archivos_selec)-1])
        n=input("digite la letra: ")
    n=alfabeto.index(n)
    print(archivos_selec[n])
menu(alfabeto,archivos_selec)
file=open(archivos_selec[n])
line=file.readline()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

NameError: name 'archivos_selec' is not defined

Publicado por José María info@g5server.com (72 intervenciones) el 23/10/2017 00:07:07
Te está volviendo a pasar lo mismo que antes.

La variable 'n' la tienes definida dentro de la función 'menu', en la fila 15

Te sugiero que la función 'menu' devuelva el valor de n

- Después de la fila 20, dentro de la función: return n
- Cambia la fila 21 por: n = menu(alfabeto,archivos_selec)

Las variables que no se definen dentro de ninguna función son globales.
Observa que la variable 'n' de la función 'menú' es diferente a la variable 'n' de la nueva fila 21

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad