Python:无法从其他文件

时间:2017-06-09 06:16:17

标签: python python-2.7 dictionary

我在从其他文件导入字典时遇到问题(我使用python 2.7)

# src/config/config_bankheist.py
bankheist_config = {

    ###############################
    # SECTION 1 : ENTERY OF HEIST #
    ###############################
    'activation_command': '!bankheist',

    (...) # More key/values here

} # End of bankheist_config

当我尝试将其导入到使用它的主文件中时:

#src/lib/commands/bankheist.py
import string

from src.lib.timers import InfiniteTimer
import src.lib.irc as irc_

from src.config.config import config
from src.config.config_bankheist import bankheist_config as bankheist

def check_init_status():
    try:
        return bankheist['init_status']
    except KeyError:
        bankheist['init_status'] = False
        return False

所以在这里我尝试通过键' init_status'来返回值。第一次,它找不到密钥,因为银行家还没有被启动......所以我很正常地找不到KeyError。相反,我得到一个 TypeError:'函数'对象没有属性' __ getitem __'

我尝试将init_status键添加到字典中并在False上初始化它,我甚至尝试导入作为全局变量(假设它在配置文件中是全局变量,并且在定义方法上是全局变量),我试图把bankhiest_config作为银行家在同一个文件中,并且它不会起作用..

我有类似于config_command.py(与config_bankheist.py相同的文件夹)和commands.py(与bankheist.py相同的文件夹)并且有效。所以我不确定我在这里做错了什么

提前致谢, Laurens的

PS:如果感兴趣,完整代码在github上:https://github.com/LaurensScheldeman/TwitchBot/commits/master

1 个答案:

答案 0 :(得分:1)

您有一个名为bankheist的函数对象,因此在dict函数定义

之后会覆盖导入的bankheist对象

尝试保留初始dict对象名称bankheist_config

import string

from src.lib.timers import InfiniteTimer
import src.lib.irc as irc_

from src.config.config import config
from src.config.config_bankheist import bankheist_config

def check_init_status():
    try:
        return bankheist_config['init_status']
    except KeyError:
        bankheist_config['init_status'] = False
        return False