Разбор файла PEM в объект - PullRequest
0 голосов
/ 01 мая 2018

У меня есть файл PEM, который содержит некоторые сертификаты. Я хочу разобрать их в объект, который имеет переменные sha_hash, pem и expiration.

Я создал объект, и он работает. Я создал список объектов. У меня проблема с парсингом. Пожалуйста, смотрите полный код ниже. Скажем, проблема в том, что я нажал на случай SHA, BEGIN или END ... он добавляет строку к объекту ... но затем он попадает в случай else ... и добавляет его во второй раз.

Что я хочу сделать после завершения одного из операторов if, это перейти на следующую строку!

class Certificate(object):
    """A class for parsing and storing information about
    certificates:"""

    def __init__(self, sha_hash="", pem="", expiration=""):
        super(Certificate, self).__init__()
        self.sha_hash = sha_hash
        self.pem = pem
        self.expiration = expiration


def main():
    cert_file = '/Users/ludeth/Desktop/testCerts.pem'
    myList = []
    cert = Certificate()

    with open(cert_file, 'r') as myFile:
        cert = Certificate()
        for line in myFile:
            if "SHA" in line:
                cert.sha_hash = line
            if "BEGIN" in line:
                cert.pem = cert.pem + line
            if "END" in line:
                cert.pem = cert.pem + line
                myList.append(cert)
                break
            else:
                cert.pem = cert.pem + line

if __name__ == '__main__':
    main()

1 Ответ

0 голосов
/ 01 мая 2018

Это происходит потому, что у вас есть несколько if s и if/else в конце. Если вы хотите всегда соответствовать точно одному из этих условий, вы можете вместо этого выполнить

if "SHA" in line:
    cert.sha_hash = line
elif "BEGIN" in line:
    cert.pem = cert.pem + line
elif "END" in line:
    cert.pem = cert.pem + line
    myList.append(cert)
    break
else:
    cert.pem = cert.pem + line
...