用于将终端证书文件批量导入进数据库
【注意】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源码相关推荐

  1. 微信小程序 -- 数据库数据excel文件批量导入

    一.excel文件批量导入数据到数据库 1.创建node.js函数upload,点击upload右键外部终端中安装类库 npm install node-xlsx 2.云函数代码 const clou ...

  2. 多个excel文件批量导入到数据库

    多个excel文件批量导入到数据库 摘要:我们可以用navicate等数据库编辑器的excel导入功能将一个excel导入到数据库,但是我们有多个excel甚至成百上千怎么办?这个时候用navicat ...

  3. .mat文件批量转成图片——python脚本编写

    .mat文件批量转成图片--python脚本编写 mat文件简介 mat文件是Matlab的数据存储的标准格式.mat文件是标准的二进制文件,还可以ASCII码形式保存和加载,在MATLAB中打开显示 ...

  4. 自制工具将excel文件批量导入到mongodb

    使用方法 下载此工具(度盘 密码: sbv6),这是一个exe文件,双击可直接运行 将这个工具放到你要处理的表格所在的目录,比如上图中有一个年级表的示例文件 确保已启动mongodb服务 双击脚本工具 ...

  5. Java:实现文件批量导入导出实践(兼容xls,xlsx)

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者:小卖铺的老爷爷 cnblogs.com/laoyeye/p/6938889.html ...

  6. solr使用网页浏览器批量导入数据库中数据(本案例是mysql)

    如果想要知道如何安装solr,集成IKAnalyzer中文分词器,批量导入数据库数据,java使用参照以下本博主博文: 安装solr https://blog.csdn.net/u013294097/ ...

  7. Java实现文件批量导入导出实例(兼容xls,xlsx)

    <link href="https://csdnimg.cn/public/favicon.ico" rel="SHORTCUT ICON"> &l ...

  8. Mac使用命令行批量导入数据库数据

    Mac使用命令行批量导入数据库数据 进入你的mysql安装目录 /usr/local/mysql/bin/mysql -u root -p 创建database CREATE DATABASE '你的 ...

  9. java导入导出有版本兼容问题_Java实现文件批量导入导出实践(兼容xls,xlsx)

    小Hub领读: 使用poi导入导出xls文件还是比较容易的,有完整的项目代码,可以clone下来好好研究哈! 1.介绍 java 实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天写 ...

最新文章

  1. 隐藏原生select下拉框的向下箭头▼
  2. JDBC--代码实现增删改查、及SQL注入问题解决
  3. JAVA删除临时文件
  4. linux+离线+搜狗,Ubuntu离线安装Sogou拼音(附老版本安装)
  5. JDK9的JShell简单使用
  6. 飞桨PaddleHub实现皮影戏
  7. 在android中使用opencv,在安卓上使用OpenCV的指南 - kdnuggets
  8. Powerdesigner设置表字段注释与name相同
  9. HDFS常用命令(总结)
  10. 怎样更改计算机ip,怎么快速修改电脑ip地址
  11. UltraEdit 26 总是偶尔提示运行的是试用模式
  12. 1.3Excel--公式
  13. Bing 必应突然不能用了(2021 年 17 日最新情况),怎么办?问题已解决
  14. 2012年8月编程语言就业趋势
  15. Diabetic Retinopathy Detection
  16. 微信开发公众号本地调试
  17. 【每日新闻】1.7万元起!华为发布首款5G折叠屏手机!
  18. MFC Tab控件的使用方法
  19. [Office] WPS Excel通过添加宏实现多张表格合并
  20. 18-Jenkisn-Pipelin-声明式流水线语法-triggers/stage/tool

热门文章

  1. spring应用实例
  2. Vue 模板语法 插值操作 绑定属性 计算属性 事件监听 条件判断 循环遍历 阶段案例
  3. Java 找平方数之和的奇数
  4. 2020计算机考研准备,2020考研:什么时候开始准备考研最合适?
  5. PhpStorm 中文设置教程
  6. poj-2406(kmp水题)
  7. [环境]Mac Homebrew自动安装
  8. Linux更换python版本 (转载)
  9. 为何Apache下.htaccess不起作用,Linux、Windows详解
  10. 并行编程——工程实践