Python ConfigParser和全局变量

Python ConfigParser和全局变量,python,configuration,global-variables,config,Python,Configuration,Global Variables,Config,我有一个python文件,它调用另一个目录中的函数。 我希望在函数中直接使用配置变量DATA\u DIR,而不必每次导入配置 主文件如下所示: #!/usr/bin/env python # -*- coding: utf-8 -*- import ConfigParser config = ConfigParser.ConfigParser() config.read('static.cfg') global __DATA_DIR__ __DATA_DIR__ = config.get('D

我有一个python文件,它调用另一个目录中的函数。 我希望在函数中直接使用配置变量DATA\u DIR,而不必每次导入配置

主文件如下所示:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import ConfigParser
config = ConfigParser.ConfigParser()
config.read('static.cfg')
global __DATA_DIR__
__DATA_DIR__ = config.get('Directories', '__DATA_DIR__')

from src.directory import file

file.function()
[Directories]
__DATA_DIR__=/directorie/to/config.cfg
函数如下所示:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

def function():

    global __DATA_DIR__
        print (__DATA_DIR__)
配置文件如下所示:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import ConfigParser
config = ConfigParser.ConfigParser()
config.read('static.cfg')
global __DATA_DIR__
__DATA_DIR__ = config.get('Directories', '__DATA_DIR__')

from src.directory import file

file.function()
[Directories]
__DATA_DIR__=/directorie/to/config.cfg
在执行第一个主程序时,我出现了以下错误:

名称错误:未定义全局名称“数据\u DIR


由于要导入函数,因此应将
\uu DATA\u DIR\uu
变量传递给函数:

from src.directory import file
file.function(__DATA_DIR__)

#your other file
def function(data):
    print (data)

为什么不将config参数传递给函数呢。这需要确认,但我认为实际上只有read方法读取和解析实际文件,而config.get方法只提供来自内部数据结构的数据,因此传递config对象并在函数中执行config.get将非常有效

因此:

在您的文件中:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

def function( cfg ):
    print ( cfg.get("__DATA_DIR__") )

没有其他方法可以一次性声明全局变量吗?@4m1nh4j1,可能吧,但这肯定是可以理解的。最好的方法是将相关数据传递给需要的函数。我的配置文件将包含10个以上的变量,每次传递的参数都会很长。否则,在每个函数中使用ConfigParser可能是一个解决方案。但我在寻找更简单的方法。无论如何,谢谢你。