macos - 如何使用 __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”的文件夹中,则不需要更改代码。
解决方案
推荐阅读
- logging - ANSIBLE 将部分任务输出存储在本地文件中
- python - 如何在 matplotlib 中分隔直方图?
- firebase - NEXT_PUBLIC 不能与 firebase-messaging-sw.js 一起使用
- flutter - AudioPlayer 搜索选项没有移动到正确的位置
- django - 重复键值违反唯一约束“unique_followuser”
- c++ - 在 macOS 上使用 Visual Studio Code 调试 C++ 标准库
- php - 通过多种分类标准在 WooCommerce 中获取产品
- c - 此代码的所有测试用例均未通过。你能说我如何获得它吗?
- fabricjs - 如何以编程方式分解fabricjs中的笔划
- flutter - 关于 Dart 语言功能的问题