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处理图片之PIL模块简单使用方法
May 11 Python
python实现的简单抽奖系统实例
May 22 Python
酷! 程序员用Python带你玩转冲顶大会
Jan 17 Python
python爬虫之线程池和进程池功能与用法详解
Aug 02 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
Oct 29 Python
pandas.cut具体使用总结
Jun 24 Python
python把ipynb文件转换成pdf文件过程详解
Jul 09 Python
Python3 批量扫描端口的例子
Jul 25 Python
pygame实现贪吃蛇游戏(下)
Oct 29 Python
使用python客户端访问impala的操作方式
Mar 28 Python
Python直接赋值及深浅拷贝原理详解
Sep 05 Python
Python之qq自动发消息的示例代码
Feb 18 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中stream(流)的用法
2014/03/25 PHP
php实现的农历算法实例
2015/08/11 PHP
Javascript中的常见排序算法
2007/03/27 Javascript
javascript检测浏览器flash版本的实现代码
2011/12/06 Javascript
js中一个函数获取另一个函数返回值问题探讨
2013/11/21 Javascript
js 金额格式化来回转换示例
2014/02/23 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
JavaScript实现自动消除按钮功能的方法
2015/08/05 Javascript
详解AngularJS如何实现跨域请求
2016/08/22 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
angular实现IM聊天图片发送实例
2017/05/08 Javascript
vue 中的keep-alive实例代码
2018/07/20 Javascript
vue中选项卡点击切换且能滑动切换功能的实现代码
2018/11/25 Javascript
vscode中eslint插件的配置(prettier配置无效)
2019/09/10 Javascript
AutoJs实现刷宝短视频的思路详解
2020/05/22 Javascript
python Django批量导入不重复数据
2016/03/25 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
python os.listdir按文件存取时间顺序列出目录的实例
2018/10/21 Python
解决Python2.7中IDLE启动没有反应的问题
2018/11/30 Python
Python pandas如何向excel添加数据
2020/05/22 Python
python 判断一组数据是否符合正态分布
2020/09/23 Python
python实现图片转字符画
2021/02/19 Python
让IE支持CSS3的不完全兼容方案
2014/09/19 HTML / CSS
JOSEPH官网:英国奢侈时尚品牌
2018/01/31 全球购物
英国和爱尔兰最大的地毯零售商:Kukoon
2018/12/17 全球购物
美国优质宠物用品购买网站:Muttropolis
2020/02/17 全球购物
毕业生多媒体设计求职信
2013/10/12 职场文书
汽车机修工岗位职责
2014/03/06 职场文书
图书室标语
2014/06/21 职场文书
应聘教师求职信
2014/07/19 职场文书
幼师求职自荐信
2015/03/26 职场文书
2015年法制宣传月活动总结
2015/03/26 职场文书
奖励申请报告范文
2015/05/15 职场文书
中学生打架《检讨书》范文
2019/08/12 职场文书
CocosCreator如何实现划过的位置显示纹理
2021/04/14 Javascript
CDPR谈《巫师》新作用虚幻5原因 称不会为Epic独占
2022/04/06 其他游戏