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实现的扫雷游戏实例代码
Aug 01 Python
Python切片用法实例教程
Sep 08 Python
Python OS模块常用函数说明
May 23 Python
在Python的一段程序中如何使用多次事件循环详解
Sep 07 Python
基于python 二维数组及画图的实例详解
Apr 03 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
Aug 22 Python
python socket 聊天室实例代码详解
Nov 14 Python
pandas 中对特征进行硬编码和onehot编码的实现
Dec 20 Python
python图形开发GUI库pyqt5的基本使用方法详解
Feb 14 Python
Pandas读取csv时如何设置列名
Jun 02 Python
Python 如何实现访问者模式
Jul 28 Python
python基于tkinter制作无损音乐下载工具
Mar 29 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
PHP对接微信公众平台消息接口开发流程教程
2014/03/25 PHP
PHP中使用sleep函数实现定时任务实例分享
2014/08/21 PHP
js tab 选项卡
2009/04/26 Javascript
MooTools 1.2介绍
2009/09/14 Javascript
jQuery中queue()方法用法实例
2014/12/29 Javascript
jQuery中:nth-child选择器用法实例
2014/12/31 Javascript
Jquery插件easyUi实现表单验证示例
2015/12/15 Javascript
jQuery简单实现tab选项卡切换效果
2016/06/20 Javascript
基于jQuery实现瀑布流页面
2017/04/11 jQuery
详解webpack和webpack-simple中如何引入css文件
2017/06/28 Javascript
React Native中的RefreshContorl下拉刷新使用
2017/10/09 Javascript
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
2017/11/08 jQuery
JS实现非首屏图片延迟加载的示例
2018/01/06 Javascript
JS实现的JSON数组去重算法示例
2018/04/11 Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
2019/01/16 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
2017/05/03 Python
Python实现学校管理系统
2018/01/11 Python
Python 读取串口数据,动态绘图的示例
2019/07/02 Python
自适应线性神经网络Adaline的python实现详解
2019/09/30 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
2020/05/22 Python
Python连接Impala实现步骤解析
2020/08/04 Python
python 删除系统中的文件(按时间,大小,扩展名)
2020/11/19 Python
用友笔试题目
2016/10/25 面试题
商场促销活动方案
2014/02/08 职场文书
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
大一工商管理职业生涯规划:有梦最美,行动相随
2014/09/18 职场文书
英文道歉信
2015/01/20 职场文书
六一儿童节开幕词
2015/01/29 职场文书
介绍信模板
2015/01/31 职场文书
寒假安全保证书
2015/02/28 职场文书
综合办公室主任岗位职责
2015/04/01 职场文书
于丹论语心得观后感
2015/06/15 职场文书
催款函怎么写
2015/06/24 职场文书
Python 内置函数速查表一览
2021/06/02 Python
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python