终端证书文件批量导入数据库的Python源码
生活随笔
收集整理的這篇文章主要介紹了
终端证书文件批量导入数据库的Python源码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
用于將終端證書文件批量導入進數據庫
【注意】Python2和Python3,在數的進制轉換上,不太一樣
Python 2
content_str += binascii.hexlify(b)Python 3
content_str += hex(b)[2:].zfill(2)完整源碼如下:
# -*- coding: utf-8 -*- import os import logging import binascii####################################################### # 運行程序,需要先配置證書文件路徑和結果文件名 # 需要處理的RTU_ID需要預先配置在文件rtu_id_list.txt中 # 如果程序運行正常,結果文件中全部都是整齊的SQL語句 # 如果程序運行正常,結果文件中會出現錯誤信息 # 所有錯誤信息均已[Error]作為行首 ######################################################## 這個是證書文件(文件夾所在父級路徑) cert_file_base = 'E:/test/PycharmProjects/ImportCert' # 這個用于保存結果的文件名 sql_file_name = 'import_cert.sql'# 從文件rtu_id_list.txt中讀取rtu_id列表 def get_rtu_list():rtu_list = []try:with open('rtu_id_list.txt', 'r') as rtu_file:rtu_ids = rtu_file.readlines()for i in range(0, len(rtu_ids)):rtu_list.append(rtu_ids[i].strip())except IOError as err:logging.error('[Error] when read rtu_id_list.txt: %s', err)finally:return rtu_list# 根據rtu_id列表,找到對應的證書文件,讀取并入庫 def get_cert_file(rtu_list):for rtu_id in rtu_list:cert_file_dir = cert_file_base + '/' + rtu_idtry:cert_file_list = os.listdir(cert_file_dir)except OSError as err:logging.error('[Error] when read %s: %s', cert_file_dir, err)continueif len(cert_file_list) != 1:logging.error("[Error] There be %d files in path: %s", len(cert_file_list), cert_file_dir)continueelse:print_sql(rtu_id, cert_file_dir, cert_file_list[0])# 針對一個具體的rtu,生成SQL def print_sql(rtu_id, cert_file_dir, cert_file_name):cert_file_path = cert_file_dir + "/" + cert_file_name# logging.info('Cert file is: '+cert_file_path)try:with open(cert_file_path, 'rb') as cert_file:content_bin = cert_file.read()except IOError as err:logging.error('[Error] when read %s: %s', cert_file_path, err)content_str = ''for b in content_bin:content_str += binascii.hexlify(b) # for Python 2# content_str += hex(b)[2:].zfill(2) # for Python 3content_str += ' 'sql = "insert into fes_cert(rtu_id,cert_file_name,cert_content) " \"values(" + rtu_id + ",'" + cert_file_name + "','" + content_str.strip() + "'); "logging.info(sql)# 程序啟動時,將結果文件清空 def clean_thing(file_name):try:file = open(file_name, 'w').close()except IOError as err:logging.error('[Error] when clean %s: %s', file_name, err)if __name__ == '__main__':# 清空結果文件clean_thing(sql_file_name)# 配置日志(SQL文件)logging.basicConfig(level=logging.DEBUG, filename=sql_file_name, filemode='a', format='%(message)s')# 運行業務邏輯get_cert_file(get_rtu_list())總結
以上是生活随笔為你收集整理的终端证书文件批量导入数据库的Python源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS屏幕录制
- 下一篇: 月薪3000,可以尝试这种理财组合