Python 具有多个部分和相同选项名称的ConfigParser?
我想让ConfigParser解决看似简单的问题,但我有一个古老的2.2 Jython系统(无法更新) 我想在我的配置文件中循环各部分,并对其值使用相同的操作。第一部分读起来不错,但在循环的第二次迭代中,我得到了“exceptions.AttributeError” 我(非常)简化的脚本:Python 具有多个部分和相同选项名称的ConfigParser?,python,jython,configparser,Python,Jython,Configparser,我想让ConfigParser解决看似简单的问题,但我有一个古老的2.2 Jython系统(无法更新) 我想在我的配置文件中循环各部分,并对其值使用相同的操作。第一部分读起来不错,但在循环的第二次迭代中,我得到了“exceptions.AttributeError” 我(非常)简化的脚本: import ConfigParser config = ConfigParser.ConfigParser() try: config.optionxform = str config.r
import ConfigParser
config = ConfigParser.ConfigParser()
try:
config.optionxform = str
config.read(domainConfigFile);
domainList = config.get("Domains","DomainList")
domainNames = domainList.split(",")
for dName in domainNames:
UCF = config.get(dName,"uHome") + '/'+config.get(dName,"userConfigFile")
UKF = config.get(dName,"uHome") + '/'+config.get(dName,"userKeyFile")
admU = config.get(dName,"admU")
print "UCF=["+UCF+"] UKF=["+UKF+"] admU=["+admU+"]"
except:
print "Error occurred"
我还不是很精通Python(但这个问题让我如此)。我一直在研究类似的问题,并使用一些修改dict的代码片段,它们在一个股票Python 2.6解释器中工作,但在Jython 2.2.6中都失败得很惨。如何在不同的部分伪造相同的键名,以便它们都可以寻址?异常的名称很有用。完整的异常堆栈跟踪更有用。这样,您就可以确切地看到引发异常的位置。第一次通过循环时,它会像我期望的那样获得第一节信息(UCF=/opt/app/myapp/configs/idm-JIT.config,UKF=/opt/app/myapp/configs/idm-JIT.key,admU=)。但是,第二次循环时,它会在第一个config.get()语句处停止并抛出异常。我正在重复使用相同的选项名称,但已分配给另一个分区。
Domains
分区是不必要的。在循环中,尝试改用config.sections()
,并将Exception
更改为Exception,e:print e
。这会帮助你解决问题。如果没有,请将异常发回这里,我们将从这里开始。我找到了原因,这是名称冲突。我在主脚本中调用的一个子函数显然重写了“config”对象。意外错误:exceptions.AttributeError Traceback(最里面的最后一个):文件“/opt/app/oracle/middleware/shared/config/scripts/startme.py”,第333行,in?文件“/opt/app/oracle/middleware/shared/config/scripts/startme.py”,第303行,在executeCommand文件“/opt/app/oracle/middleware/shared/config/scripts/startme.py”,第232行,在_startallattributeError:“function”对象没有属性“get”
import ConfigParser
config = ConfigParser.ConfigParser()
try:
config.optionxform = str
config.read(domainConfigFile);
domainList = config.get("Domains","DomainList")
domainNames = domainList.split(",")
for dName in domainNames:
UCF = config.get(dName,"uHome") + '/'+config.get(dName,"userConfigFile")
UKF = config.get(dName,"uHome") + '/'+config.get(dName,"userKeyFile")
admU = config.get(dName,"admU")
print "UCF=["+UCF+"] UKF=["+UKF+"] admU=["+admU+"]"
except:
print "Error occurred"