导入整个python文件夹

时间:2016-09-05 19:03:43

标签: python python-3.x

我在python 3中制作一个机器人并希望它能够轻松扩展,所以我有一个中央文件,然后每个命令一个。我想知道是否有一种方法可以导入一个完整模块的子目录,而无需单独导入每个模块。例如:

example
├── commands
│   ├── bar.py
│   └── foo.py
└── main.py

main.py中的代码类似于:

import /commands/*

谢谢:D

解决方案: 分别导入每个: from commands import foo, bar

from commands import *不起作用。

2 个答案:

答案 0 :(得分:0)

如果您使用的是python3,则importlib模块可用于动态导入模块。在python2.x上,有__import__函数,但我对语义不是很熟悉。作为一个简单的例子,

我当前目录中有2个文件

# a.py
name = "a"

# b.py
name = "b"

在同一目录中,我有这个

import glob
import importlib

for f in glob.iglob("*.py"):
    if f.endswith("load.py"):
        continue
    mod_name = f.split(".")[0]
    print ("importing {}".format(mod_name))
    mod = importlib.import_module(mod_name, "")
    print ("Imported {}. Name is {}".format(mod, mod.name))

这将打印

importing b Imported <module 'b' from '/tmp/x/b.py'>. 
Name is b
importing a Imported <module 'a' from '/tmp/x/a.py'>. 
Name is a

答案 1 :(得分:-2)

分别导入每个: from commands import barfrom commands import foo

from commands import *不起作用。