2011-06-19 7 views
2

書き込むデータの種類を読み込んで保存するパーサーがありますか? ファイル形式は、読み取り可能な形式でなければなりません。 棚には表示されません。Python iniパーサー

+2

[のConfigParser](http://docs.python.org/library/configparser.html) –

+0

んConfigParserのは、あなたがやりたいことではありませんか? –

+0

私は自動タイプの検出をサポートする必要があります。 ConfigParserはすべてを文字列として読み込みます。 – Evgeny

答えて

1

iniファイル形式の設定ファイルを読むためにConfigParserクラスを使用します。

http://docs.python.org/library/configparser.html#examples

iniファイル形式が格納された値のデータ型を格納していません(あなたが読んとしてそれらを知っている必要がありますデータバック)。あなたはJSON形式で自分の価値観を符号化することにより、この制限を克服することができます:

import simplejson 
from ConfigParser import ConfigParser 

parser = ConfigParser() 
parser.read('example.cfg') 

value = 123 
#or value = True 
#or value = 'Test' 

#Write any data to 'Section1->Foo' in the file: 
parser.set('Section1', 'foo', simplejson.dumps(value)) 

#Now you can close the parser and start again... 

#Retrieve the value from the file: 
out_value = simplejson.loads(parser.get('Section1', 'foo')) 

#It will match the input in both datatype and value: 
value === out_value 

JSONなので、格納された値の形式が読める人間です。

+0

レコードタイプの読み込みを自動的に検出するパーサが必要です。 – Evgeny

+0

ConfigParserはすべてを文字列として読み取ります。 – Evgeny

+0

次に、文字列をjson形式で格納するので、型も読み取ることができます。 –

0

あなたはconfigobjライブラリーでは、次の機能

def getvalue(parser, section, option): 
    try: 
     return parser.getint(section, option) 
    except ValueError: 
     pass 
    try: 
     return parser.getfloat(section, option) 
    except ValueError: 
     pass 
    try: 
     return parser.getbool(section, option) 
    except ValueError: 
     pass 
    return parser.get(section, option) 
+0

ブール値(1または0としてiniファイルに格納されています)を格納すると、intバックを取得します。 –

+0

これは重要な制限です。はい。残念なことに、正確な意味を知ることは不可能です。 (できるだけ多くの値がある場合のように)。幸運にも、もし 'getvalue(パーサ、" asection "、" boollookslikeint ")のようなものを使用すれば問題はありません: – Robin

+0

最終的に、OPは単にiniファイル形式のものを保存するだけです。データ型を戻すことができます。 –

0

を使用することができ、それは非常に簡単になります。

import sys 
import json 
from configobj import ConfigObj 

if(len(sys.argv) < 2): 
    print "USAGE: pass ini file as argument" 
    sys.exit(-1) 

config = sys.argv[1] 
config = ConfigObj(config) 

今、あなたは、目的の設定を抽出するために辞書としてconfigを使用することができます。

jsonに変換したい場合は、それも簡単です。

config_json = json.dumps(config) 
print config_json