2015-11-03 18 views
1

我試圖從屬性讀取屬性文件,如果它不存在,我需要補充的是財產屬性文件讀寫性能使用配置解析器在Python腳本

以下是我的腳本

import ConfigParser 

config = ConfigParser.RawConfigParser() 
config.read('test.properties') 

ip = config.get('client', 'primaryIp') 
print "ip is " +ip 

if not ip: 
    Config.set('client','primaryIp','10.31.1.143') 

但它在行拋出以下錯誤 「IP = config.get( '客戶', 'PRIMARYIP')」

Traceback (most recent call last): 
    File "test.py", line 8, in <module> 
    ip = config.get('client', 'primaryIp') 
    File "/usr/lib64/python2.7/ConfigParser.py", line 340, in get 
    raise NoOptionError(option, section) 
ConfigParser.NoOptionError: No option 'primaryIp' in section: 'client' 

我怎麼能避免此異常

回答

2

如果有任何問題,請使用try except來捕捉您的異常。

這是一個簡單的概念,如果你有選擇primaryIp那麼一切都很好,但如果你有一個NoOptionError那麼你需要設置的選項,因爲它是不存在的文件中:

import ConfigParser 

config = ConfigParser.RawConfigParser() 
config.read('test.properties') 

try: 
    ip = config.get('client', 'primaryIp') 
    print "ip is " +ip 
except NoOptionError: 
    config.set('client','primaryIp','10.31.1.143') 
+0

執行上面的腳本拋出以下異常,回溯(最近通話最後一個): 文件「test.py」,9號線,在 除了NoOptionError: NameError:名字「NoOptionError」沒有定義 – user3607869

+0

當我修改它以除外ConfigParser.NoOptionError :,它已成功執行,但primaryIp屬性未寫入test.proper關係 – user3607869

+0

你修正是當前的,或者你可以從'ConfigParser import NoOptionError'中找到,至於''''你需要用'config.write(configfile)''''''''config'對象將它寫入文件' –