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笔记(叁)继续学习
Oct 24 Python
python列表操作使用示例分享
Feb 21 Python
shelve  用来持久化任意的Python对象实例代码
Oct 12 Python
对Python中range()函数和list的比较
Apr 19 Python
详解Django 中是否使用时区的区别
Jun 14 Python
Python使用pydub库对mp3与wav格式进行互转的方法
Jan 10 Python
树莓派实现移动拍照
Jun 22 Python
Django配置文件代码说明
Dec 04 Python
keras 获取某层的输入/输出 tensor 尺寸操作
Jun 10 Python
python使用matplotlib:subplot绘制多个子图的示例
Sep 24 Python
Python SQLAlchemy库的使用方法
Oct 13 Python
Python Django路径配置实现过程解析
Nov 05 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读取excel文件示例分享(更新修改excel)
2014/02/27 PHP
PHP实现对文本数据库的常用操作方法实例演示
2014/07/04 PHP
简单的php+mysql聊天室实现方法(附源码)
2016/01/05 PHP
cakephp常见知识点汇总
2017/02/24 PHP
Yii框架的布局文件实例分析
2019/09/04 PHP
javascript 从if else 到 switch case 再到抽象
2010/07/17 Javascript
JQuery1.8 判断元素是否绑定事件的方法
2014/07/10 Javascript
jQuery解决浏览器兼容性问题案例分析
2016/04/15 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
jQuery3.0中的buildFragment私有函数详解
2016/08/16 Javascript
纯js实现html转pdf的简单实例(推荐)
2017/02/16 Javascript
原生node.js案例--前后台交互
2017/02/20 Javascript
微信小程序之蓝牙的链接
2017/09/26 Javascript
vue2.0 循环遍历加载不同图片的方法
2018/03/06 Javascript
vue实现简单loading进度条
2018/06/06 Javascript
express启用https使用小记
2019/05/21 Javascript
微信小程序实现页面跳转传递参数(实体,对象)
2019/08/12 Javascript
vue 遮罩层阻止默认滚动事件操作
2020/07/28 Javascript
[52:39]完美世界DOTA2联赛PWL S3 CPG vs Forest 第一场 12.16
2020/12/17 DOTA
[48:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第二场 1月29日
2021/03/11 DOTA
Python中一行和多行import模块问题
2018/04/01 Python
用pycharm开发django项目示例代码
2018/10/24 Python
python读取几个G的csv文件方法
2019/01/07 Python
Python3.5面向对象与继承图文实例详解
2019/04/24 Python
Django中多种重定向方法使用详解
2019/07/17 Python
python代码打印100-999之间的回文数示例
2019/11/24 Python
Python requests获取网页常用方法解析
2020/02/20 Python
Python在字符串中处理html和xml的方法
2020/07/31 Python
CSS3 Pie工具推荐--让IE6-8支持一些优秀的CSS3特性
2014/09/02 HTML / CSS
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
意大利在线高尔夫商店:Online Golf
2021/03/09 全球购物
质量提升方案
2014/06/16 职场文书
共青团员自我评价范文
2014/09/14 职场文书
意外伤害赔偿协议书范本
2014/09/28 职场文书
公务员检讨书
2014/11/01 职场文书
Python集合set()使用的方法详解
2022/03/18 Python