Saya memiliki file bernama fileOne.txt seperti yang ditunjukkan di bawah ini

mystring:
   keyFile: enable
   clusterAuthMode: enable
   authorization: string
   transitionToAuth: boolean
   javascriptEnabled:  enable
   redactClientLogData: boolean

security:
   keyFile: string
   clusterAuthMode: disable
   authorization: string
   transitionToAuth: boolean
   javascriptEnabled:  enable
   redactClientLogData: boolean

test:
   keyFile: disable
   clusterAuthMode: enable
   authorization: string
   transitionToAuth: boolean
   javascriptEnabled: enable
   redactClientLogData: boolean

stack:
   keyFile: string
   clusterAuthMode: enable
   authorization: string
   transitionToAuth: boolean
   javascriptEnabled: enable
   redactClientLogData: enable

Dan file lain bernama FileTwo.txt seperti yang ditunjukkan di bawah ini

security:
   keyFile: string
   clusterAuthMode: enable
   authorization: string
   transitionToAuth: boolean
   javascriptEnabled: enable

Saya perlu memeriksa apakah konteks FileTwo.txt ada di FileOne.txt atau tidak. Dan cetak Cocok atau Tidak Cocok atau Tidak Ditemukan.

OUTPUT - Cocok - keamanan: Cocok - keyFile: string TIDAK Cocok - clusterAuthMode: nonaktifkan Cocok - otorisasi: string TIDAK Cocok - FileString: boolean Cocok - javascriptEnabled: aktifkan TIDAK Ditemukan - redactClientLogData: boolean

0
Nishant Raghuvanshi 8 Januari 2020, 09:04

2 jawaban

Jawaban Terbaik

Kode:

import yaml  # pip install pyyaml


def read_yaml(file):
    with open(file, 'r') as f:
        return yaml.safe_load(f)


def compare(a, b):
    for key in a:
        if key not in b:
            # print('NOT Found - {}'.format(key))
            continue

        print('Matched - {}'.format(key))
        for sub_key, sub_value in a[key].items():
            if sub_key not in b[key]:
                print('NOT Found - {}: {}'.format(sub_key, sub_value))
            else:
                if sub_value == b[key][sub_key]:
                    print('Matched - {}: {}'.format(sub_key, sub_value))
                else:
                    print('NOT Matched - {}: {}'.format(sub_key, sub_value))


f1 = read_yaml('FileOne.txt')
f2 = read_yaml('FileTwo.txt')
compare(f1, f2)

Keluaran:

Matched - security
Matched - keyFile: string
NOT Matched - clusterAuthMode: disable
Matched - authorization: string
Matched - transitionToAuth: boolean
Matched - javascriptEnabled: enable
NOT Found - redactClientLogData: boolean
0
kyungmin 8 Januari 2020, 07:41

File txt yang Anda sebutkan berformat yaml. Jika Anda tidak tahu tentang yaml, silakan kunjungi https://docs. ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html

Mengurai yaml cukup mudah dengan python. python datang dengan modul yaml. Anda dapat menggunakan perintah di bawah ini untuk menginstalnya, jika Anda mendapatkan Kesalahan Impor saat mengimpor modul yaml.

pip install pyyaml

Setelah Anda yakin dengan instalasi modul yaml, silakan gunakan kode di bawah ini

import yaml
with open("FileOne.txt") as fh:
    data1 = yaml.load(fh)
with open("FileTwo.txt") as fh:
    data2 = yaml.load(fh)
for key in data2.keys():
    if key not in data1.keys():
        continue
    else:
        print "Matched - %s"%(key)
        x = data1[key]
        y = data2[key]
        for k in y:
            if k in y and x[k] == y[k]:
                print "Matched - %s: %s"%(k, y[k])
            else:
                print "NOT Matched - %s: %s"%(k, y[k])

Saya harap ini cocok dengan apa yang Anda butuhkan.

0
Shrey 8 Januari 2020, 06:47