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通过字典dict判断指定键值是否存在的方法
Mar 21 Python
python打开url并按指定块读取网页内容的方法
Apr 29 Python
Django imgareaselect手动剪切头像实现方法
May 26 Python
基于Django filter中用contains和icontains的区别(详解)
Dec 12 Python
python 寻找离散序列极值点的方法
Jul 10 Python
python threading和multiprocessing模块基本用法实例分析
Jul 25 Python
docker-py 用Python调用Docker接口的方法
Aug 30 Python
Django使用消息提示简单的弹出个对话框实例
Nov 15 Python
Python matplotlib以日期为x轴作图代码实例
Nov 22 Python
使用Django搭建网站实现商品分页功能
May 22 Python
Python字符串常规操作小结
Apr 03 Python
如何基于python实现单目三维重建详解
Jun 25 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
建立文件交换功能的脚本(三)
2006/10/09 PHP
PHP的单引号和双引号 字符串效率
2009/05/27 PHP
php实现执行某一操作时弹出确认、取消对话框
2013/12/30 PHP
实例介绍PHP的Reflection反射机制
2014/08/05 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
PHP回调函数概念与用法实例分析
2017/11/03 PHP
js 小数取整的函数
2010/05/10 Javascript
jquery插件jTimer(jquery定时器)使用方法
2013/12/23 Javascript
JS建造者模式基本用法实例分析
2015/06/30 Javascript
js注入 黑客之路必备!
2016/09/14 Javascript
详解vue.js的事件处理器v-on:click
2017/06/27 Javascript
js判断传入时间和当前时间大小实例(超简单)
2018/01/11 Javascript
Vue实现手机扫描二维码预览页面效果
2020/05/28 Javascript
Java中重定向输出流实现用文件记录程序日志
2015/06/12 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
2017/06/09 Python
Python单体模式的几种常见实现方法详解
2017/07/28 Python
Python判断两个对象相等的原理
2017/12/12 Python
pandas数值计算与排序方法
2018/04/12 Python
python查看模块,对象的函数方法
2018/10/16 Python
Python使用combinations实现排列组合的方法
2018/11/13 Python
Django 限制访问频率的思路详解
2019/12/24 Python
python如何使用Redis构建分布式锁
2020/01/16 Python
Python如何获取文件路径/目录
2020/09/22 Python
瑞士设计师家具和家居饰品网上商店:Bruno Wickart
2019/03/18 全球购物
西班牙宠物用品和食品网上商店:Tiendanimal
2019/06/06 全球购物
JENNIFER BEHR官网:各种耳环和发饰
2020/06/07 全球购物
渡河少年教学反思
2014/02/12 职场文书
幼儿园父亲节活动方案
2014/03/11 职场文书
诉讼授权委托书范本
2014/10/05 职场文书
全国法院系统开展党的群众路线教育实践活动综述(全文)
2014/10/25 职场文书
自愿离婚协议书范本
2015/01/26 职场文书
个人年底工作总结
2015/03/10 职场文书
运动会宣传语
2015/07/13 职场文书
Python实现简单的俄罗斯方块游戏
2021/09/25 Python
《原神》新角色演示“神里绫人:林隐泓洄” 宠妹狂魔
2022/04/03 其他游戏
Python OpenGL基本配置方式
2022/05/20 Python