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实现基于HTTP文件传输实例
Nov 08 Python
python实现清屏的方法
Apr 30 Python
Python Web程序部署到Ubuntu服务器上的方法
Feb 22 Python
Python实现的堆排序算法示例
Apr 29 Python
解决PyCharm控制台输出乱码的问题
Jan 16 Python
分享8个非常流行的 Python 可视化工具包
Jun 05 Python
检测python爬虫时是否代理ip伪装成功的方法
Jul 12 Python
详解Django CAS 解决方案
Oct 30 Python
Django集成celery发送异步邮件实例
Dec 17 Python
Python 自由定制表格的实现示例
Mar 20 Python
Python 通过正则表达式快速获取电影的下载地址
Aug 17 Python
python中validators库的使用方法详解
Sep 23 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
阿拉伯的咖啡与水烟
2021/03/03 咖啡文化
用PHP读取IMAP邮件
2006/10/09 PHP
一个简单的域名注册情况查询程序
2006/10/09 PHP
PHP中如何调用webservice的实例参考
2013/04/25 PHP
ExtJS 简介 让你知道extjs是什么
2008/12/29 Javascript
javascript 面向对象编程基础:封装
2009/08/21 Javascript
利用JS解决ie6不支持max-width,max-height问题的方法
2014/01/02 Javascript
JS长整型精度问题实例分析
2015/01/13 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
2015/03/18 Javascript
18个非常棒的jQuery代码片段
2015/11/02 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
2016/05/10 Javascript
vue中接口域名配置为全局变量的实现方法
2018/09/20 Javascript
Node.js 使用axios读写influxDB的方法示例
2018/10/26 Javascript
关于Vue源码vm.$watch()内部原理详解
2019/04/26 Javascript
python面向对象_详谈类的继承与方法的重载
2017/06/07 Python
python实现将读入的多维list转为一维list的方法
2018/06/28 Python
Python 利用内置set函数对字符串和列表进行去重的方法
2018/06/29 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
python八皇后问题的解决方法
2018/09/27 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
2018/12/18 Python
树莓派使用USB摄像头和motion实现监控
2019/06/22 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
2019/11/19 Python
python3的UnicodeDecodeError解决方法
2019/12/20 Python
Python的历史与优缺点整理
2020/05/26 Python
python定义具名元组实例操作
2021/02/28 Python
CSS3之多背景background使用示例
2013/10/18 HTML / CSS
世界各地的旅游、观光和活动:Isango!
2019/10/29 全球购物
阿里巴巴的Oracle DBA笔试题答案-SQL tuning类
2016/04/03 面试题
入股协议书
2014/04/14 职场文书
学校关爱留守儿童活动方案
2014/08/27 职场文书
2014年路政工作总结
2014/12/10 职场文书
社区党风廉政建设调研报告
2015/01/01 职场文书
仓管员岗位职责
2015/02/03 职场文书
经营目标责任书
2015/05/08 职场文书
MySQL数据库事务的四大特性
2022/04/20 MySQL
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers