0

我的脚本应该像这样调用:

# python start.py --config=start.cfg

所以我有三个文件:

开始.py

import argparse                                                                 
import options                                                                  

parser = argparse.ArgumentParser(prog='mystart')                                
parser.add_argument("-f", "--file", dest="filename",                            
                    help="write report to FILE", metavar="FILE")                

args = parser.parse_args()                                                      
ConfigFile = args.filename                                                      

test = options.getTest()                                                        

print test

选项.py

from ConfigReader import getConfigValue as getVal                               


def getTest():                                                                  
    Test = getVal('main', 'test')                                               
    return Test 

配置读取器.py

import os                                                                       
import ConfigParser                                                             


def config():                                                                   
    cfg = ConfigParser.ConfigParser()                                           
    for f in ('default.cfg',):                                                  
        if os.path.exists(f):                                                   
            cfg.read(f)                                                         
            return cfg                                                          
    return None                                                                 


def getConfigValue(Section, Option):                                            
    cfg = config()                                                              
    if cfg.has_option(Section, Option):                                         
        return cfg.get(Section, Option)                                         
    else:                                                                       
        return None

如您所见,我的配置文件被硬编码在我的模块 ConfigReader.py 中。我现在如何将我的 var ConfigFile 传递到我的模块中?

这只是一个简单的例子。我有一堆文件也应该访问这个变量。

全局变量是一种选择吗?还有其他方法吗?

4

2 回答 2

0

开始.py

...
options.ConfigFile = args.filename
... 

选项.py

from ConfigReader import getConfigValue as getVal, ConfigFile                               

def getTest():                                                                  
    Test = getVal('main', 'test')                                               
    return Test 

配置读取器.py

import os                                                                       
import ConfigParser                                                             

ConfigFile='default.cfg'  
def config():                                                                   
    cfg = ConfigParser.ConfigParser()                                           
    for f in set(['default.cfg',ConfigFile]):                                                  
        if os.path.exists(f):                                                   
            cfg.read(f)                                                         
            return cfg                                                          
    return None                                                                 


def getConfigValue(Section, Option):                                            
    cfg = config()                                                              
    if cfg.has_option(Section, Option):                                         
        return cfg.get(Section, Option)                                         
    else:                                                                       
        return None
于 2013-07-29T08:28:02.017 回答
0

我为我找到了解决方案。

开始.py

[...]
import ConfigRader
[...]
ConfigReader.LoadConfigFile(args.filename)

配置读取器.py

[...]
_ConfigFile = None                                                              
def LoadConfigFile(File):                                                          
    if not File:                                                                
        File = 'default.cfg'                                                    
    global _ConfigFile                                                          
    _ConfigFile = File
[...]
于 2013-08-01T07:45:40.583 回答