python 自动化将markdown文件转成html文件的方法
作者:Ron Ngai 发布时间:2021-09-16 16:04:40
一、背景
我们项目开发人员写的文档都是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文件的方法网站的支持!
来源:http://www.cnblogs.com/rond/p/5897625.html
猜你喜欢
- 最新版本的Python发布了!今年夏天,Python 3.8发布beta版本,在2019年10月14日,第一个正式版本已准备就绪。现在,我们
- opencv中内置了张正友的棋盘格标定法,通过一些姿态各异的棋盘格图像,就能标定相机的内外参数。角点检测第一步是角点检测,首先需要读取棋盘格
- 近段时间由于修改一个ASP程序(有SQL注入漏洞),在网上找了很多相关的一些防范办法,都不近人意,所以我将现在网上的一些方法综合改良了一下,
- groupby()函数在python的DataFrame中对数据进行分组统计主要使用groupby()函数。1. groupby基本用法1.
- 一、前言前文是针对普通的字符串数据进行处理。今天,我们要讲解的textwrap库,是对多文本进行处理的库。比如对于段落的缩进,填充,截取等,
- 目的:在百度贴吧输入关键字和要查找的起始结束页,获取帖子里面楼主所发的图片思路:获取分页里面的帖子链接列表获取帖子里面楼主所发的图片链接列表
- Apple4.us的张亮问我:“很多人说用户体验是苹果的核心竞争力。在用户体验方面,我究竟该从苹果的设计中学习什么” ?关于这个问题的答案我
- 之前画图一直在用matlibplot、pyecharts,最近学习了一个新的可视化库–cufflinks,用了两天我已经深深爱上它了主要是因
- 上一篇的DOCTYPE声明好以后,接下来的代码是:<html xmlns="xhtml" ta
- #coding:utf-8 import urllib.request import xml.dom.minidom import sqli
- 一行拆分成多行1.根据某一列拆分效果:代码:if __name__ == '__main__':
- YAML是一种直观的能够被电脑识别的的数据序列化格式,容易被人类阅读,并且容易和脚本语言交互。YAML类似于XML,但是语法比XML简单得多
- 以下是个人在学习beautifulSoup过程中的一些总结,目前我在使用爬虫数据时使用的方法的是:先用find_all()找出需要内容所在的
- 可用下列函数来产生你需要的东西,将它们发送给用户就可以啦:<%response.write makePassword(16)
- 之前看到好友在发各种"群发"来检验对方是不是把自己删除了,好吧,其实那个没啥用处.所以决定自己动手做一个百度了一下,检测
- 首先说说框架(Frameworks)这个词,框架就是为我们提供了一个平台一个运行环境,在如此统一的前提下我们做相关开发才能“有章可循”,要充
- 本文实例讲述了PHP实现判断二叉树是否对称的方法。分享给大家供大家参考,具体如下:问题请实现一个函数,用来判断一颗二叉树是不是对称的。注意,
- <P><HTML><HEAD><TITLE>javascriptboy</TITLE&
- 今天在刷leetcode的时候,对于179题返回最大数,用python2中的sorted(cmp)会很方便,但是在python3中这一参数被
- import md5 import sys def sumfile(fobj): m = md5.new() while True: d =