Pythonはコンフィギュレーションファイルを比較します

キー=一般的なコンフィギュレーション・ファイル、JSON形式の設定ファイル、HTMLファイル形式の設定とYMAMLプロファイルの値:最も一般的なジョブプロファイルは、4があります。

大多数の最初のうち、後者の3つは、最初のプロファイルについては、この記事で成熟したオープンソース製品ではより一般的です。

主に当社の構成で、一般的なLinuxシェルのdiffは、プレーンテキストの構成ファイルのクラスを比較する場合のコマンド提供し、Pythonのdifflibも比較STRとHTMLインタフェースを提供しますが、実際のプロジェクトこれらのツール実際には容易ではありませんファイルの標準化が統一されていません。

このような問題を解決するためには、リリースは非常に有用であろう時になるように、特定のプロジェクトのための具体的な設定ファイル比較ツールを書くのがベストです。

直接コードに添付言って怠惰つまり、:

!/ Pythonの#は/ usr / binに
#コーディング= UTF-8 

「」 ' 
このスクリプトは、プロファイルのキーを比較するように適合された=値の形式は
道を使用する:
NEW_FILE old_file config_match.pyは、
最終的にNEW_FILEで新しい設定項目に追加されますでold_file、old_file既存の設定項目に変更を加えないでください。
'' ' 

インポート再
インポートOS、SYSの
リロード(SYS) "UTF-8")sys.setdefaultencoding 

sys.argvの= old_file [1] 
NEW_FILE = sys.argvの[2] 

DEFのlist2dict(ファイル)
    を開く(ファイル、と'R&LT')F AS:
    	リストf.readlines =() 横断STRリスト、および除外#列strで始まる空白行は、STR要素が[K、V]の要素に分割するために使用される
    リストにEの[0:] :
    	IF re.match( '^#'、E)またはre.match( '^ $'、E):
	    list.remove(E)
    I = 0 
    リストのEのために:
	。= e.strip e_split()スプリット( '=') 
    他:
		合格
	LEN IF(e_split)== 2:
	    。K、V = e.strip()スプリット( '=')
    	    リストは、[I]は= [Kは、V] 
	他:
	    合格
	私は= I + 1つの。
    #ポイントがリストに[なりますkは、V]、[kは、 V]、...] このようなリスト
    #番号は複数を含み、または含ま= CI =数は、この注目すべきで、無視される
    戻り辞書(リスト)

old_file(old_dict = list2dict )
new_dict = list2dict(NEW_FILE)

「'」
、新しい設定ファイルを横切る古いファイル形式を追加するconf_need_added {}構成要素辞書を加え、次いで辞書がconf_need_added {}、K = Vを追加します。
重複するキー値が単純すぎるだろう更新する必要がある場合は、辞書の種類には、タスクを完了するために非常に良いことができupdate()メソッドが付属していますので、必要がトスしないように。
'' ' 
Conf_need_added = {} 
)(new_dict.items にK、Vのための:
    :)(old_dict.keysにおけるKれない場合、
		[K]は、V = conf_need_added

:F AS(old_file 'A')とのオープン
    K、Vのためのconf_need_added.itemsで():
		f.write( '\ N-#ここでは、新しい構成項目である:N- \')が
		f.write(STR(K) + '=' + STR(V )+ '\ n')

 

おすすめ

転載: www.cnblogs.com/leohahah/p/10984574.html