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 绘图库 Matplotlib 入门教程
Apr 19 Python
Windows 64位下python3安装nltk模块
Sep 19 Python
djang常用查询SQL语句的使用代码
Feb 15 Python
python用for循环求和的方法总结
Jul 08 Python
python使用Pandas库提升项目的运行速度过程详解
Jul 12 Python
Python3内置模块之base64编解码方法详解
Jul 13 Python
基于python3抓取pinpoint应用信息入库
Jan 08 Python
Python 存取npy格式数据实例
Jul 01 Python
python将图片转为矢量图的方法步骤
Mar 30 Python
Python实战之疫苗研发情况可视化
May 18 Python
python 如何将两个实数矩阵合并为一个复数矩阵
May 19 Python
Python采集股票数据并制作可视化柱状图
Apr 04 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
UTF8编码内的繁简转换的PHP类
2009/07/09 PHP
利用php+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
PHP防范SQL注入的具体方法详解(测试通过)
2014/05/09 PHP
zend framework框架中url大小写问题解决方法
2014/08/19 PHP
javascript的console.log()用法小结
2012/05/31 Javascript
Ext JS 4官方文档之三 -- 类体系概述与实践
2012/12/16 Javascript
JS实现网站菜单拖拽移位效果的方法
2015/09/24 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
关于TypeScript中import JSON的正确姿势详解
2017/07/25 Javascript
利用CDN加速react webpack打包后的文件详解
2018/02/22 Javascript
vue2.0模拟锚点的实例
2018/03/14 Javascript
express框架下使用session的方法
2019/07/31 Javascript
JavaScript undefined及null区别实例解析
2020/07/21 Javascript
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
python获取文件版本信息、公司名和产品名的方法
2014/10/05 Python
Python中装饰器的一个妙用
2015/02/08 Python
python类装饰器用法实例
2015/06/04 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
2016/12/27 Python
VTK与Python实现机械臂三维模型可视化详解
2017/12/13 Python
Tensorflow实现卷积神经网络的详细代码
2018/05/24 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
python五子棋游戏的设计与实现
2019/06/18 Python
python集合的创建、添加及删除操作示例
2019/10/08 Python
Django实现CAS+OAuth2的方法示例
2019/10/30 Python
使用Python内置模块与函数进行不同进制的数的转换
2020/04/26 Python
Python参数传递机制传值和传引用原理详解
2020/05/22 Python
Django+RestFramework API接口及接口文档并返回json数据操作
2020/07/12 Python
学生个人自我鉴定
2014/03/26 职场文书
社区党建工作汇报材料
2014/10/27 职场文书
学雷锋日活动总结
2015/02/06 职场文书
中小学生安全教育观后感
2015/06/17 职场文书
《坐井观天》教学反思
2016/02/18 职场文书
详解Python flask的前后端交互
2022/03/31 Python
Golang 实现WebSockets
2022/04/24 Golang