es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿El módulo Python-import importa listas?

Hola, tengo 2 archivos de Python en el mismo directorio:

paths.py:

import os


def Listfilesindirectory():

    os.chdir(input('Directorio de trabajo: '))

    pathlist = os.listdir()

    for i in range(len(pathlist)):
        print(pathlist[i] + '\n')

main_hash.py:

import defs
import paths

paths.Listfilesindirectory()

hashlist = []

for n in range(len(pathlist)):
    hashlist[n] = defs.hash_file(pathlist[n])

print(hashlist)

Primero importo el archivo paths.py en main_hash.py; luego en main.py ejecuto (¿es ejecutar el término correcto?) Listfilesindirectory que definí en paths.py. No hay problema hasta aquí, se ejecuta sin problemas. Luego quiero usar la lista “pathlist” que inicié en paths.py. Pero obtengo el siguiente código de error:

Traceback (most recent call last):
  File "/Users/kyilmaz/Documents/Python/main_hash.py", line 10, in <module>
    for n in range(len(pathlist)):
NameError: name 'pathlist' is not defined

¿No debería importarse “pathlist” en main.py? También intenté: from paths import pathlist. No funciona.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema es que la variable pathlist no está siendo devuelta o asignada a una variable global en la función Listfilesindirectory() en paths.py. Por lo tanto, no se puede acceder a ella en main_hash.py.

    Para solucionar este problema, puedes modificar la función Listfilesindirectory() en paths.py para que devuelva la variable pathlist después de que se haya definido:

    import os
    
    def Listfilesindirectory():
        os.chdir(input('Directorio de trabajo: '))
        pathlist = os.listdir()
        for i in range(len(pathlist)):
            print(pathlist[i] + '\n')
        return pathlist
    

    En main_hash.py, luego puedes llamar a la función y asignar el valor devuelto a una variable antes de usarla en el bucle for:

    import defs
    import paths
    
    pathlist = paths.Listfilesindirectory()
    
    hashlist = []
    
    for n in range(len(pathlist)):
        hashlist.append(defs.hash_file(pathlist[n]))
    
    print(hashlist)
    

    Esto debería solucionar el NameError que estabas experimentando.

Comments are closed.