ConfigParser 모듈 을 사용 하여 일반 파일 을 분석 합 니 다.
3307 단어 [프로 그래 밍 언어][데이터 창고]【프로젝트 관리】
# 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 도 가능 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Shell 에서 텍스트 가 긴 줄 을 삭제 하 는 방법어떤 때 는 파일 삭제 삭제 작업 을 수행 해 야 합 니 다. 이 럴 때 vi 명령 의 dd 명령 을 자주 사용 합 니 다. 예 를 들 어 파일 에서 한 줄 의 길이 가 200 글자 가 넘 는 줄 을 삭제 하려 면 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.