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 相关文章推荐
基于wxpython实现的windows GUI程序实例
May 30 Python
Python学习思维导图(必看篇)
Jun 26 Python
python下setuptools的安装详解及No module named setuptools的解决方法
Jul 06 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
Feb 21 Python
批量将ppt转换为pdf的Python代码 只要27行!
Feb 26 Python
BP神经网络原理及Python实现代码
Dec 18 Python
Django 简单实现分页与搜索功能的示例代码
Nov 07 Python
python socket 聊天室实例代码详解
Nov 14 Python
Python发送手机动态验证码代码实例
Feb 28 Python
python用TensorFlow做图像识别的实现
Apr 21 Python
python实现扫雷小游戏
Apr 24 Python
六种酷炫Python运行进度条效果的实现代码
Jul 17 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
xajax写的留言本
2006/11/25 PHP
mysq GBKl乱码
2006/11/28 PHP
国外PHP程序员的13个好习惯小结
2012/02/20 PHP
详解PHP中mb_strpos的使用
2018/02/04 PHP
laravel 模型查询按照whereIn排序的示例
2019/10/16 PHP
仿校内登陆框,精美,给那些很厉害但是没有设计天才的程序员
2008/11/24 Javascript
js截取固定长度的中英文字符的简单实例
2013/11/22 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
微信小程序 wxapp视图容器 view详解
2016/10/31 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
2016/11/29 Javascript
js操作浏览器的参数方法
2017/01/21 Javascript
漂亮实用的页面loading(加载)封装代码
2017/02/03 Javascript
详解Angular之constructor和ngOnInit差异及适用场景
2017/06/22 Javascript
JavaScript实现左侧菜单效果
2017/12/14 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
Vue+abp微信扫码登录的实现代码示例
2020/01/06 Javascript
python中getattr函数使用方法 getattr实现工厂模式
2014/01/20 Python
解决python tkinter界面卡死的问题
2019/07/17 Python
Python3 pandas 操作列表实例详解
2019/09/23 Python
django实现后台显示媒体文件
2020/04/07 Python
英国最大的汽车交易网站:Auto Trader UK
2016/09/23 全球购物
资深财务管理人员自我评价
2013/09/22 职场文书
文员个人的求职信范文
2013/09/26 职场文书
学年自我鉴定范文
2013/10/01 职场文书
竞选班干部演讲稿500字
2014/08/20 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
教师党员个人整改措施
2014/10/27 职场文书
2016春节慰问信范文
2015/03/25 职场文书
2015年幼儿园保育工作总结
2015/05/12 职场文书
小学安全教育主题班会
2015/08/12 职场文书
运动会200米广播稿
2015/08/19 职场文书
导游词之台湾安平古堡
2019/12/25 职场文书
数据库连接池
2021/04/06 MySQL
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏
git中cherry-pick命令的使用教程
2022/06/25 Servers