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中的装饰器的用法
Apr 24 Python
pymssql数据库操作MSSQL2005实例分析
May 25 Python
Python抓取框架Scrapy爬虫入门:页面提取
Dec 01 Python
Python File readlines() 使用方法
Mar 19 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
May 25 Python
Python实现账号密码输错三次即锁定功能简单示例
Mar 29 Python
Python实现的对一个数进行因式分解操作示例
Jun 27 Python
python动态进度条的实现代码
Jul 03 Python
python中的Elasticsearch操作汇总
Oct 30 Python
Matlab使用Plot函数实现数据动态显示方法总结
Feb 25 Python
理解深度学习之深度学习简介
Apr 14 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笔试题
2009/08/04 PHP
一直复略了的一个问题,关于表单重复提交
2007/02/15 Javascript
ext checkboxgroup 回填数据解决
2009/08/21 Javascript
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
JavaScript基础语法、dom操作树及document对象
2014/12/02 Javascript
微信小程序中的swiper组件详解
2017/04/14 Javascript
Bootstrap模态框插入视频的实现代码
2017/06/25 Javascript
js实现复制功能(多种方法集合)
2018/01/06 Javascript
vue.js中toast用法及使用toast弹框的实例代码
2018/08/27 Javascript
D3.js的基础部分之数组的处理数组的排序和求值(v3版本)
2019/05/09 Javascript
Vue 列表页带参数进详情页的操作(router-link)
2020/11/13 Javascript
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
2021/02/26 Vue.js
Python的Flask框架中的Jinja2模板引擎学习教程
2016/06/30 Python
python基础_文件操作实现全文或单行替换的方法
2017/09/04 Python
python网络编程之多线程同时接受和发送
2019/09/03 Python
python3 pillow模块实现简单验证码
2019/10/31 Python
Python文件操作方法详解
2020/02/09 Python
Python结合Window计划任务监测邮件的示例代码
2020/08/05 Python
Python多线程的退出控制实现
2020/08/10 Python
python实现二分查找算法
2020/09/18 Python
Python根据URL地址下载文件并保存至对应目录的实现
2020/11/15 Python
解决html5中video标签无法播放mp4问题的办法
2017/05/07 HTML / CSS
Melissa香港官网:MDreams
2016/07/01 全球购物
联想墨西哥官方网站:Lenovo墨西哥
2016/08/17 全球购物
李宁官方网店:中国运动品牌
2017/11/02 全球购物
挂职思想汇报
2013/12/31 职场文书
新春联欢会主持词
2014/03/24 职场文书
农村葬礼主持词
2014/03/31 职场文书
安全施工责任书
2014/08/25 职场文书
党的群众路线教育实践活动个人对照检查剖析材料
2014/09/23 职场文书
2014物价局民主生活会对照检查材料思想汇报
2014/09/24 职场文书
介绍信模板
2015/01/31 职场文书
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python
MySQL如何解决幻读问题
2021/08/07 MySQL
threejs太阳光与阴影效果实例代码
2022/04/05 Javascript
使用Django框架创建项目
2022/06/10 Python