首页 > 解决方案 > 如何使用 __import__ 导入另一个文件夹中的文件?

问题描述

早上好。

我遇到了以下问题:我在同一个文件夹中有一系列文件,包括一个名为“handles.py”的文件和 3 个名为“module_{number}.py”的文件,其中 {number} 从 a 到 c。

我正在以以下方式从“handles.py”导入名为“module...py”的文件:

def carga_modulos(folder = os.getcwd()):

  files   = [e[:-3] for e in os.listdir(folder) if ((e.split('_')[0] == 'module') & (e.split('.')[-1] == 'py'))]
  modulos = dict()

  for x in files:
    try:
      modulos[x[7:]] = __import__(x)
      print('Cargado módulo {}.'.format(x))

    except:
      print('Fallo al importar {}.'.format(x))

  if len(modulos) == 0:
    print('No se ha cargado ningún módulo.')
    sys.exit()

  return modulos

此代码完美运行,但是,我重新排序了文件的文件夹结构,现在我有 2 个不同的文件夹:“general_files”,其中包括“handles.py”和“modules”,其中包括三个模块“modules” ...py'。

目前,我将之前的代码替换为:

def carga_modulos(folder = '../modules'):

  files   = [e[:-3] for e in os.listdir(folder) if ((e.split('_')[0] == 'module') & (e.split('.')[-1] == 'py'))]
  modulos = dict()

  for x in files:
    try:
      modulos[x[7:]] = __import__(os.path.join(folder, x))
      print('Cargado módulo {}.'.format(x))

    except:
      print('Fallo al importar {}.'.format(x))

  if len(modulos) == 0:
    print('No se ha cargado ningún módulo.')
    sys.exit()

  return modulos

但这不起作用,代码只是落在 except 块中,总是在modulos[x[7:]] = __import__(os.path.join(folder, x)).

非常感谢您提前!

编辑:

我想我可以更清楚:我要复制的是以下代码

import sys 
sys.path.append('../general_files')

import module_a
import module_b
import module_c

这个想法是如果我将一个新文件添加到名为“module_d.py”的文件夹中,则不需要更改代码。

标签: macospython-2.7

解决方案


推荐阅读