>  기사  >  백엔드 개발  >  [Python]ConfigParser 모듈

[Python]ConfigParser 모듈

巴扎黑
巴扎黑원래의
2016-11-21 15:30:55938검색

1 서문
최근 MySQL 데이터베이스 인스턴스의 백업 및 복원을 연구하면서 이전 데이터 구성과 새 인스턴스의 my.cnf 구성이 일치하지 않는지 확인하기 위해 backup-my.cnf를 사용했습니다. innodb_data_file_path 매개변수가 수정되었는지 여부. my.cnf를 어떻게 구문 분석하나요? 그래서 Python에서 제공하는 ConfigParser 모듈을 공부했습니다. 이 모듈은 기본적으로 요구 사항을 충족하면서 공통 구성 파일에 대한 읽기 및 수정 작업을 완료할 수 있습니다.
2 사용 방법
2.1 구성 파일 형식
구성 파일은 주로 섹션 영역으로 구성되며 섹션에서 option=value 또는 option:value를 사용하여 매개 변수를 구성할 수 있습니다.

[섹션1 이름]

option1=값 1

....

optionN= 값 N

[섹션2 이름]

option1=값 1

....

optionN=valueN

일반적인 my.cnf 형식은 다음과 같습니다

[mysqld]

innodb_log_files_in_group = 2

innodb_page_size = 16384

innodb_log_block_size = 512

innodb_data_file_path = ibdata1:2G:autoextend

innodb_log_file_size = 53687091 2

2.2 ConfigParser 모듈
Python의 ConfigParser 모듈은 RawCnfigParser, ConfigParser, SafeConfigParser의 3가지 클래스를 정의합니다. 그 중 RawCnfigParser는 가장 기본적인 구성 파일 읽기 클래스입니다. ConfigParser와 SafeConfigParser는 RawCnfigParser를 기반으로 자체 확장을 만들었습니다.
ConfigParser 클래스를 예로 소개합니다. ConfigParser 모듈의 작업은 주로 다음과 같습니다.
a ConfigParser 인스턴스 초기화
b 구성 읽기
c 구성 수정
구성 파일을 읽는 일반적인 방법

cf.read(filename) 구성 파일 내용 읽기

cf.sections() 모든 섹션을 가져와서 목록 형식으로 반환

cf. options(section) 지정된 섹션 아래의 모든 옵션을 가져옵니다

cf.items(section) 지정된 섹션 아래의 모든 키-값 쌍을 가져와서 튜플 형식으로 반환합니다

cf.get(section, option) 지정된 섹션의 option 값을 가져와서 문자열 형식으로 반환합니다.

cf.getint(section, option) option 값을 가져옵니다. 지정된 섹션에 옵션을 추가하고 int 유형으로 반환

cf.has_option(section,option) 섹션에 지정된 옵션이 있는지 확인하고 있으면 True를 반환하고, 없으면 False를 반환합니다

cf.has_section(section) 섹션이 있는지 확인하고 True이면 반환, False 반환 없음

구성 파일 수정을 위한 일반적인 방법

cf. add_section(section) 구성 파일에 새 섹션 추가

cf.set(section, option, value) 섹션에서 옵션 설정

cf.remove_section( 섹션) 지정된 섹션 삭제

cf.remove_option(section , option) 지정된 섹션의 옵션 삭제

참고 구성 파일을 수정하려면 다음이 필요합니다. 구성 파일에 내용을 쓰려면 write를 호출하세요.

2.3 예

접거나 열려면 (여기)를 클릭하세요

#!/usr/bin/python2.6

#coding:utf8

가져오기 ConfigParser

old_mycnf_file='backup-my.cnf'

new_mycnf_file='my.cnf'

cf =ConfigParser.ConfigParser()

cf.read(new_mycnf_file)

sec=cf.sections()

'섹션:', 초 인쇄

opts = cf.options("mysqld")

'옵션:', opts
인쇄

kvs = cf.items("mysqld")

for kv in kvs:

kv 인쇄

innodb_data_file_path=cf.get('mysqld','innodb_data_file_path')

innodb_log_file_size=cf.get('mysqld','innodb_log_file_size')

'innodb_data_file_path: ',innodb_data_file_path

print 'innodb_log_file_size:',innodb_log_file_size

"수정 후" 인쇄

cf.set('mysqld', 'innodb_data_file_path','ibdata1:1G:autoextend')

cf.write(open(new_mycnf_file, "w"))

cf.read(new_mycnf_file)

InnoDB_DATA_FILE_PATH = CF.GET ('MySQLD', 'Innodb_data_file_path')


PRINT 'Innodb_data_path:', InnoDB_DATA_F ILE_PATH

yangyidba: Yangyi $ Python writecnf 테스트. py


섹션: ['mysqld']


옵션: ['innodb_log_files_in_group', 'innodb_page_size', 'innodb_log_block_size', 'innodb_data_file_path', 'innodb_ log_file_size' , 'ibdata1']


('innodb_log_files_in_group', '2')


('innodb_page_size', '16384')


( 'innodb_log_block_size', '512')


('innodb_data_file_path', 'ibdata1:2G:autoextend')


('innodb_log_file_size', '536870912')

('ibdata1', '2g:autoextend = ibdata1:2G:autoextend')

innodb_data_file_path : ibdata1:1G:autoextend

innodb_log_file_size : 536870912

수정 후

innodb_data_file_path : ibdata1:1G:autoextend

세 가지 요약
ConfigParser 모듈에서 제공하는 기능에 따르면 기본적으로 다음을 충족할 수 있다. 일상 업무의 요구 사항 구성 파일 수정 작업. 보다 자세한 내용은 공식 문서를 참고하시기 바랍니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.