python 自动化将markdown文件转成html文件的方法


Posted in Python onSeptember 23, 2016

一、背景

我们项目开发人员写的文档都是markdown文件。对于其它组的同学要进行阅读不是很方便。每次编辑完markdown文件,我都是用软件将md文件转成html文件。刚开始转的时候,还没啥,转得次数多了,就觉得不能继续这样下去了。作为一名开发人员,还是让机器去做这些琐碎的事情吧。故写了两个脚本将md文件转成html文件,并将其放置在web服务器下,方便其他人员阅读。

主要有两个脚本和一个定时任务:

•一个python脚本,主要将md文件转成html文件;

•一个shell脚本,主要用于管理逻辑;

•一个linux定时任务,主要是定时执行shell脚本。

二、用python将markdown转成html

2.1 python依赖库

使用python的markdown库来转换md文件到html依赖两个库:

•pip install markdown

•pip install importlib

2.2 核心代码

核心代码其实只有一句,执行 markdown.markdown(text)就可以获得生成的html的原文。

input_file = codecs.open(in_file, mode="r", encoding="utf-8")
text = input_file.read()
html = markdown.markdown(text)

2.3 html编码和html样式

直接markdown.markdown(text)生成的html文本,非常粗略,只是单纯的html内容。而且在浏览器内查看的时候中文乱码(在chrome中),没有好看的css样式,太丑了。

解决办法也很简单,在保存文件的时候,将<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />和css样式添加上。就这么简单解决了。

2.4 完整python内容

•读取md文件;

•将md文件转成html文本;

•添加css样式和保存html文本。

python代码内容:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 使用方法 python markdown_convert.py filename
import sys
import markdown
import codecs
css = '''
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
<!-- 此处省略掉markdown的css样式,因为太长了 -->
</style>
'''
def main(argv):
name = argv[0]
in_file = '%s.md' % (name)
out_file = '%s.html' % (name)
input_file = codecs.open(in_file, mode="r", encoding="utf-8")
text = input_file.read()
html = markdown.markdown(text)
output_file = codecs.open(out_file, "w",encoding="utf-8",errors="xmlcharrefreplace")
output_file.write(css+html)
if __name__ == "__main__":
main(sys.argv[1:])

三、shell逻辑

3.1 逻辑说明

建立一个shell文件,用于进行逻辑处理,主要操作如下:

•更新svn文件,将最新的md文件更新下来(此处假设md文件是测试文档.md);

•执行python markdown_convert.py $NAME将md文件转成html文件(生成测试文档.html);

•将转好的html迁移到web路径下(移动到html/测试文档.html);

•启动一个web服务(此处用的是python的SimpleHTTPServer的web服务器).

3.2 完整shell逻辑

#!/bin/bash
NAME='测试文档'
## 更新代码
svn update
## 删除html文件
if [ -f "$NAME.html" ];then
rm "$NAME.html"
fi
## 生成html
if [ -f "$NAME.md" ];then
python markdown_convert.py $NAME
fi
## 生成html目录
if [ ! -d "html" ];then
mkdir "html"
fi
## 拷贝html文件
if [ -f "$NAME.html" ];then
mv -f "$NAME.html" "html/"
fi
## 开启web服务器
PID=`ps aux | grep 'python -m SimpleHTTPServer 8080' | grep -v 'grep' | awk '{print $2}'`
if [ "$PID" = "" ];then
cd html
nohup python -m SimpleHTTPServer 8080 &
echo 'start web server'
else
echo 'already start'
fi

四、linux定时任务

在shell命令下输入crontab -e进入linux定时任务编辑界面。在里面设置markdown2web.sh脚本的定时任务:

## 更新文档
*/10 * * * * cd /home/xxx/doc; sh markdown2web.sh > /dev/null 2>&1

以上所述是小编给大家介绍的python 自动化将markdown文件转成html文件的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python使用socket连接远程服务器的方法
Apr 29 Python
在Python的web框架中编写创建日志的程序的教程
Apr 30 Python
Python实现树莓派WiFi断线自动重连的实例代码
Mar 16 Python
python使用 HTMLTestRunner.py生成测试报告
Oct 20 Python
75条笑死人的知乎神回复,用60行代码就爬完了
May 06 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
Jul 07 Python
django 多对多表的创建和插入代码实现
Sep 09 Python
基于python实现计算且附带进度条代码实例
Mar 31 Python
Windows下Anaconda和PyCharm的安装与使用详解
Apr 23 Python
Python脚本实现监听服务器的思路代码详解
May 28 Python
Python中random模块常用方法的使用教程
Oct 04 Python
Python尾递归优化实现代码及原理详解
Oct 09 Python
Python增量循环删除MySQL表数据的方法
Sep 23 #Python
教你用Python脚本快速为iOS10生成图标和截屏
Sep 22 #Python
Python 制作糗事百科爬虫实例
Sep 22 #Python
Python 使用SMTP发送邮件的代码小结
Sep 21 #Python
Python 使用requests模块发送GET和POST请求的实现代码
Sep 21 #Python
Python中将字典转换为列表的方法
Sep 21 #Python
Python 两个列表的差集、并集和交集实现代码
Sep 21 #Python
You might like
深入了解php4(1)--回到未来
2006/10/09 PHP
ThinkPHP实现跨模块调用操作方法概述
2014/06/20 PHP
Paypal实现循环扣款(订阅)功能
2017/03/23 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
PHP进阶学习之命名空间基本用法分析
2019/06/18 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
javascript XMLHttpRequest对象全面剖析
2010/04/24 Javascript
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
火狐下table中创建form导致两个table之间出现空白
2013/09/02 Javascript
JQuery性能优化的几点建议
2014/05/14 Javascript
JavaScript实现自动弹出窗口并自动关闭窗口的方法
2015/08/06 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
值得学习的bootstrap fileinput文件上传工具
2016/11/08 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
2017/01/12 Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
2017/12/25 Javascript
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
2018/09/14 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
Vue 中使用富文本编译器wangEditor3的方法
2019/09/26 Javascript
node.js中path路径模块的使用方法实例分析
2020/02/13 Javascript
JavaScript实现简单的图片切换功能(实例代码)
2020/04/10 Javascript
微信小程序文章详情功能完整实例
2020/06/03 Javascript
分享python数据统计的一些小技巧
2016/07/21 Python
python实现汉诺塔方法汇总
2016/07/25 Python
CSS3实现超酷的黑猫警长首页
2016/04/26 HTML / CSS
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
html5手机键盘弹出收起的处理
2020/01/20 HTML / CSS
在线购买世界上最好的酒:BoozeBud
2018/06/07 全球购物
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
超市营业员求职简历的自我评价
2013/10/17 职场文书
机械工程学院大学生求职信
2014/05/25 职场文书
学习型党组织建设经验材料
2014/05/26 职场文书
国际商务专业求职信
2014/07/15 职场文书
警察群众路线整改措施
2014/09/26 职场文书
2014年创卫工作总结
2014/11/24 职场文书
2015年学生会纪检部工作总结
2015/03/31 职场文书
Vue OpenLayer 为地图绘制风场效果
2022/04/24 Vue.js