ConfigParser 모듈 을 사용 하여 일반 파일 을 분석 합 니 다.

ConfigParser 모듈 은 Python 에서 프로필 을 읽 기 위 한 패키지 입 니 다.설정 파일 의 형식 은 다음 과 같 습 니 다.괄호"[]"에 포 함 된 것 은 section 입 니 다.section 다음은 key-value 와 유사 한 설정 내용 입 니 다.
# build.ini
[db]
db_host = 127.0.0.1
db_port = 22
db_user = root
db_pass = 1234

[handle]
handle_thread = 10
handle_processor = 20

흔히 볼 수 있 는 처리 방법 은 다음 과 같다.
import ConfigParser as cp

###      ,       
cf = cp.ConfigParser()
cf.read("build.ini")

###     sections
st = cf.sections()
print 'section:', st

###     sections options
op = cf.options("db")
print 'options:', op

###     section     
vl = cf.items("db")
print 'db_k==v:', vl

###         section option  
# get()           //-->       
# getint()        //-->       
# getfloat()      //-->       
# getboolean()    //-->       
db_host = cf.get("db", "db_host")
db_port = cf.getint("db", "db_port")
db_user = cf.get("db", "db_user")
db_pass = cf.get("db", "db_pass")
print "db_host:", db_host
print "db_port:", db_port
print "db_user:", db_user
print "db_pass:", db_pass

###     option  , w     
cf.set("db", "db_pass", "4321")
cf.write(open("build.ini", "w"))

###     section, w     
cf.add_section("system")
cf.set("system", "system_os", "Linux")
cf.set("system", "system_admin", "root")
cf.set("system", "system_version", "4.11.12")
cf.write(open("build.ini", "w"))

###   section  option, w     
cf.remove_option("system","system_os")
cf.remove_section("system")
cf.write(open("build.ini", "w"))

위의 출력 은 대략 다음 과 같다.
section: ['db', 'handle']
options: ['db_host', 'db_port', 'db_user', 'db_pass']
db_k==v: [('db_host', '127.0.0.1'), ('db_port', '22'), ('db_user', 'root'), ('db_pass', '4321')]
db_host: 127.0.0.1
db_port: 22
db_user: root
db_pass: 4321

설정 파일 이 위의 표준 형식 이 아니라면 어떻게 해석 해 야 합 니까?
#      :build.ini
db_host = 127.0.0.1
db_port = 22
db_user = root
db_pass = 4321

일반적으로 생각 할 수 있 는 처리 방법:
user = ''
port = 0
with open(r'build.ini','r') as fd:
    for line in fd:
        if line.split('=')[0].strip() == 'db_user':
            user = line.split('=')[1]
        if line.split('=')[0].strip() == 'db_port':
            port = line.split('=')[1]
print 'user: %s port: %s' % (user, port)

위의 프로필 build.ini 는 표준 ini 가 아 닙 니 다.section 이 부족 합 니 다.간단하게 처리 하면 스 크 립 트 에[db]를 추가 한 다음 에 처리 합 니 다!
import ConfigParser as cp
import StringIO

cfg = cp.RawConfigParser()
cfg.readfp(StringIO.StringIO('[db]
' + open('build.ini').read())) user = cfg.get('db', 'db_user') port = cfg.get('db', 'db_port') print 'user: ', user print 'port: ', port

위의 처 리 를 통 해 위의 효 과 를 얻 을 수 있 고 코드 가 간결 하 며 출력 이 예 쁘 고 Pythonic 도 가능 합 니 다.

좋은 웹페이지 즐겨찾기