Мой скрипт должен называться как thiks:
# python start.py --config=start.cfg
Итак, у меня есть три файла:
start.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
options.py
from ConfigReader import getConfigValue as getVal
def getTest():
Test = getVal('main', 'test')
return Test
ConfigReader.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 в свой модуль?
Это всего лишь простой пример. У меня есть куча файлов, которые также должны обращаться к этой переменной.
Является ли глобальная переменная опцией? Есть ли другой способ?
load_configuration()
, которая принимает имя файла в качестве аргумента. - person Martijn Pieters   schedule 29.07.2013