背景:部门需要发送周报、月报,每次都需要去数据库导出数据整理统计发送给领导,人工操作显得繁琐且费时间。

1、可以定时用python将数据库查询数据结果写成html文件,达到浏览器访问的效果,定时发送给领导查看即方便又省力。效果如下:

2、首先准备好数据,要保存在哪个路径下命名为什么html文件,要写入html文件的数据是什么

a. 保存在本地E:\Double路径下并命名为test.html:   E:\Double\test.html

b. 此处数据我使用的是json数组(此数组是由python连接数据库select显示出来的结果,可查看上篇Python连接数据库):

[{'BugID': 21457,'Bug标题': '新增报错','创建人': '小A'},{'BugID': 21484,'Bug标题': '删除报错', '创建人': '小B',},{'BugID': 21607,'Bug标题': '修改报错', '创建人': '小C'},{'BugID': 21626,'Bug标题': '查询报错', '创建人': '小D'}]

3、Python代码

# -*- coding: UTF-8 -*-
def bugHtml(jsonList,localFile):
'''
color设置黑色字体,width比例100%自适应页面,border-collapse表格边框线合并,text-align表格内容显示居中
background-color蓝色背景,padding内边距,border-color蓝色边框;
'''
#<style>定义table全局格式
table_head="<!DOCTYPE html>\n" \
"<html>\n" \
"<head>\n" \
"<meta charset='UTF-8'>\n" \
"<title>2023年测试组</title>\n" \
"<style type='text/css'>\n" \
"table {color:#333333; width:100%; border-collapse:collapse; text-align:center;}\n" \
"table th {background-color:#97CEFA; padding:8px; border-color:#97CEFA;}\n" \
"table td {padding:8px; border-color:#97CEFA;}\n" \
"</style>\n" \
"</head>\n" #处理表头格式
table_th=''
for title in jsonList[0]:
table_th = table_th + '<th>'+ str(title) + '</th>'
table_th='<tr>' + table_th + '</tr>\n' #处理行格式
table_tr = ''
for i in range(0, len(jsonList)):
for n,m in enumerate(jsonList[i]):
if n == 0:
#行首单独处理<tr>
jsonList[i][m] = '<tr><td>' + str(jsonList[i][m])
table_tr = table_tr + str(jsonList[i][m]) + '</td><td>'
#行尾单独处理</tr>
table_tr = table_tr[0:-3] + '/tr>\n'
table_body = "<body>\n" \
"<table border='1'>\n" \
"<caption>测试组本周未解决Bug</caption>\n"
table_body=table_body+table_th+table_tr+'</table>\n</body>\n'
#将整个html代码组合起来
tableCode = table_head + table_body + '</html>' #将html代码写入文件
html_write=open(localFile,"w",encoding="utf-8")
html_write.write(tableCode) if __name__=="__main__":
#jsonList是json数组
jsonList=[{'BugID': 21457,'Bug标题': '新增报错','创建人': '小A'},
{'BugID': 21484,'Bug标题': '删除报错', '创建人': '小B',},
{'BugID': 21607,'Bug标题': '修改报错', '创建人': '小C'},
{'BugID': 21626,'Bug标题': '查询报错', '创建人': '小D'}]
localFile=r'E:\Double\test.html'
bugHtml(jsonList, localFile)

4、执行脚本成功在本地E:\Double路径下生成test.html文件, 选中test.html文件右键浏览器中打开

浏览器展示结果

5、也可以选中test.html文件右键记事本打开,查看生成的html代码

<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<title>2023年测试组</title>
<style type='text/css'>
table {color:#333333; width:100%; border-collapse:collapse; text-align:center;}
table th {background-color:#97CEFA; padding:8px; border-color:#97CEFA;}
table td {padding:8px; border-color:#97CEFA;}
</style>
</head>
<body>
<table border='1'>
<caption>测试组本周未解决Bug</caption>
<tr><th>BugID</th><th>Bug标题</th><th>创建人</th></tr>
<tr><td>21457</td><td>新增报错</td><td>小A</td></tr>
<tr><td>21484</td><td>删除报错</td><td>小B</td></tr>
<tr><td>21607</td><td>修改报错</td><td>小C</td></tr>
<tr><td>21626</td><td>查询报错</td><td>小D</td></tr>
</table>
</body>
</html>

Python编写html文件的更多相关文章

  1. python编写文件统计脚本

    python编写文件统计脚本 思路:用os模块中的一些函数(os.listdir().os.path.isdir().os.path.join().os.path.abspath()等) 实现功能:显 ...

  2. [译]Python编写虚拟解释器

    使用Python编写虚拟机解释器 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环 ...

  3. Hadoop:使用原生python编写MapReduce

    功能实现 功能:统计文本文件中所有单词出现的频率功能. 下面是要统计的文本文件 [/root/hadooptest/input.txt] foo foo quux labs foo bar quux ...

  4. Python读取SQLite文件数据

    近日在做项目时,意外听说有一种SQLite的数据库,相比自己之前使用的SQL Service甚是轻便,在对数据完整性.并发性要求不高的场景下可以尝试! 1.SQLite简介: SQLite是一个进程内 ...

  5. RobotFramework自动化测试框架-使用Python编写自定义的RobotFramework Lib

    使用Python构建Lib工程 可以用来开发Python Lib的IDE工具有很多,常见的有Pycharm,Eclipse with PyDev插件等,而且在RobotFramework官网中也已经提 ...

  6. Python编写守护进程程序

    Python编写守护进程程序思路 1. fork子进程,父进程退出通常,我们执行服务端程序的时候都会通过终端连接到服务器,成功连接后会加载shell环境,终端和shell都是进程,shell进程是终端 ...

  7. windows平台 python生成 pyd文件

    Python的文件类型介绍: .py       python的源代码文件 .pyc     Python源代码import后,编译生成的字节码 .pyo     Python源代码编译优化生成的字节 ...

  8. 【转】python编写规范——中标软件有限公司测试中心

    [转]python编写规范 一.说明 二.内容 1. 代码布局 1.1 缩进 1.2 表达式和语句中的空格 1.3 行的最大长度 1.4 空行... 1.5 编码... 2. 语句... 2.1 标准 ...

  9. python编写shell脚本详细讲解

    python编写shell脚本详细讲解 那,python可以做shell脚本吗? 首先介绍一个函数: os.system(command) 这个函数可以调用shell运行命令行command并且返回它 ...

  10. Python __init__.py 文件使用

    __init__.py的主要作用是: 1. Python中package的标识,不能删除 2. 定义__all__用来模糊导入 3. 编写Python代码(不建议在__init__中写python模块 ...

随机推荐

  1. k8s——pod的资源配置文件详解(manifest)

    pod的资源配置文件(manifest) 详细介绍pod的资源配置文件(mannifest)的各个字段的含义 元数据 字段 是否必须 类型 含义 由用户提供 备注 name 必须 str pod的名称 ...

  2. c# IdHelper生成唯一的雪花Id

    为什么使用雪花ID 在以前的项目中,最常见的两种主键类型是自增Id和UUID,在比较这两种ID之前首先要搞明白一个问题,就是为什么主键有序比无序查询效率要快,因为自增Id和UUID之间最大的不同点就在 ...

  3. rsync备份

    备份工具rsync 备份是太常见.且太重要的一个日常工作了. 备份源码.文档.数据库.等等. 类似cp命令拷贝,但是支持服务器之间的网络拷贝,且保证安全性. 学习背景 超哥游戏公司要每天都要对代码备份 ...

  4. element-ui 合并行或列 table :span-method(行合并)

    element-ui 官网案例:table合并行或列 element-ui官网中关于行合并的例子是根据行号进行合并的,这显然不符合我们日常开发需求,因为通常我们table中的数据都是动态生成的,所以需 ...

  5. 实战分析Java的异步编程,并通过CompletableFuture进行高效调优

    一.写在开头 在我们一开始讲多线程的时候,提到过异步与同步的概念,这里面我们再回顾一下: 同步:调用方在调用某个方法后,等待被调用方返回结果:调用方在取得被调用方的返回值后,再继续运行.调用方顺序执行 ...

  6. 调用了这么久的JS方法是长在对象、类、值本身还是原型链上?

    调用了这么久的JS方法是长在对象.类.值本身还是原型链上? JavaScript这门语言总是能带给我惊喜,在敲代码的时候习以为常的写法,退一步再看看发现自己其实对很多基操只有表面的使用,而从来没思考过 ...

  7. error while loading shared libraries: liblzma.so.5: cannot open shared object file: No such file or directory

    CentOS6安装mongo报错 error while loading shared libraries: liblzma.so.5: cannot open shared object file: ...

  8. 【论文阅读】自动驾驶光流任务 DeFlow: Decoder of Scene Flow Network in Autonomous Driving

    再一次轮到讲自己的paper!耶,宣传一下自己的工作,顺便完成中文博客的解读 方便大家讨论. Title Picture Reference and pictures paper: https://a ...

  9. 【进阶篇】Java 项目中对使用递归的理解分享

    [进阶篇]Java 项目中对使用递归的理解分享 目录 [进阶篇]Java 项目中对使用递归的理解分享 前言 一.什么是递归 1.1基本概念 1.2优缺点 1.3与迭代的区别 二.实际案例 三.改进方案 ...

  10. WIN 11 共享设置

    我的电脑 -> 管理 -> 用户 -> 解除 GUEST 禁用 gpedit.msc -> 计算机管理 -> 本地 -> 从网络上访问本机 -> 允许GUES ...