私は2つの [〜#〜] ini [〜#〜] ファイルを持っています、そして私はそれらの間の違いを見たいです(どのキーが異なる値を持ち、どのキーが他のキーを持っていないか) 、 そう...
2つ(またはそれ以上)を比較する方法 [〜#〜] ini [〜#〜] ファイル?
これがserverfaultからの回答です。
https://serverfault.com/questions/28194/is-there-a-tool-to-compare-values-in-ini-files
または、このリストをご覧ください Iniエディター/ツールの比較 ただし、差分ツールがおそらく最も簡単です。
そのために、Windows用のオープンソースで無料の差分ツールである Winmerge などの比較ツールを使用できます。 2つのファイルを並べて表示し、違いを色分けします。
Microsoft Windows 98/2000/XP/2003/Vista/7をサポートします。
私は10年以上ScootersoftwareによるBeyondCompareを使用しています。 http://www.scootersoftware.com/
私はこのサービスを使用しています http://inicompare.io/
2つ以上を比較します。
コマンドプロンプトからファイル比較コマンドラインユーティリティ(任意のウィンドウ)を使用します(cmd intor start/runダイアログを入力します)
fc inifile1.ini inifile2.ini
結果は後で入力されます。結果を確認したい場合
fc inifile1.ini inifile2.ini > results.txt
後者の後、ファイルresults.txtにレポートが表示されます。
ExamDiff と呼ばれる素敵なWindowsフリーウェアユーティリティを見つけました。先日、あなたが望むことを正確に実行し、ユーザーフレンドリーで無料です。 'pro'バージョンの料金を支払えば、ディレクトリ比較も実行されます。
私が探していたものが見つからなかった理由のために、ここで私の迅速で汚いpython解決策、多分それは誰かを助けるでしょう:
import configparser as cp
f1 = "org.ini"
f2 = "new.ini"
config1 = cp.ConfigParser()
config2 = cp.ConfigParser()
config1.read(f1)
config2.read(f2)
for section in config1.sections():
if section not in config2.sections():
print(section, "NOT in 2")
else:
for key in config1[section]:
if key not in config2[section]:
print("[miss] section", section, "key", key, "not in new")
else:
if config1[section].get(key).split(";")[0].strip() != config2[section].get(key).split(";")[0].strip():
print("[chang] section", section, "key", key, config1[section].get(key).split(";")[0].strip(),
"org != new", config2[section].get(key).split(";")[0].strip())
for section in config2.sections():
if section not in config1.sections():
print(section, "NOT in 1")
else:
for key in config2[section]:
if key not in config1[section]:
print("[miss] section", section, "key", key, "not in org")
これはこれの新しいバージョンです http://winmerge.org/source-code/ 誰かがこのスレッドに投稿しました ここ 。
私は実際に職場でこの問題に対処するためにCLIアプリを作成しましたが、雇用主は親切にもオープンソース化してくれました。
https://github.com/Comcast/compare-ini-files
これにより、2つ以上のiniファイルが比較され、異なる値と欠落しているスタンザが報告されます。