[Python]ConfigParser モジュール

巴扎黑
巴扎黑オリジナル
2016-11-21 15:30:551012ブラウズ

1 はじめに
最近、私は MySQL データベース インスタンスのバックアップと復元について研究しています。古いデータ構成と新しいインスタンスの my.cnf 構成が一致していないかどうかを判断するために、backup-my.cnf を使用しています。パラメータが変更されました。 my.cnf を解析するにはどうすればよいですか?そこで、Python が提供する ConfigParser モジュールを勉強しました。このモジュールは、一般的な構成ファイルの読み取りと変更操作を完了でき、基本的にニーズを満たします。
2 使用方法
2.1 設定ファイルの形式
設定ファイルは主にセクション領域で構成されており、セクション内でパラメータを設定するためにoption=valueまたはoption:valueを使用できます。

[セクション1の名前]

オプション1=値1

....

オプションN=値N

[セクション2の名前]

オプション1=値1

....

オプションN =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 = 536870912

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) の形式で返します 指定されたセクションのオプションの値を取得し、文字列型として返します

cf.getint(section,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(section) 指定されたセクションを削除します

cf.remove_option(section,option) 指定されたセクション内のオプションを削除します

注構成ファイルを変更するには、write を呼び出して内容を構成ファイルに書き込む必要があります。

2.3 例

(ここ) をクリックして折りたたむか開きます

#!/usr/bin/python2.6

#coding:utf8

import ConfigParser

old_mycnf_file='backup-my.c NF '

new_mycnf_file='my.cnf'

cf =ConfigParser.ConfigParser()

cf.read(new_mycnf_file)

sec=cf.sections()

print 'セクション:' ,秒

opts= cf.options( "mysqld")

print 'options:'、opts

kvs= cf.items( "mysqld")kvs in kvs:

printkv

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

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

print 'innodb_data_file_path :' _data_file _path

print 'innodb_log_file_size : ',innodb_log_file_size

print "変更後"

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_file_path :',innodb_data_file_path

yangyiD :test 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']

('in db_log_files_in_group がありません', '2 ')

('innodb_page_size', '16384')


('innodb_log_block_size', '512')


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


('in b_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

3 つのまとめ

ConfigParser モジュールが提供する機能に基づいて、基本的に日常業務での構成ファイルの変更ニーズを満たすことができます。詳細については、公式ドキュメントを参照してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。