[python]自动化将markdown文件转成html文件

简介:

一、背景

我们项目开发人员写的文档都是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

设置每10分钟执行一次markdown2web.sh脚本,当然也可以根据需求修改频率。

本文转自 Ron Ngai 博客园博客,原文链接:http://www.cnblogs.com/rond/p/5897625.html  ,如需转载请自行联系原作者

相关文章
|
9月前
|
数据可视化 Linux iOS开发
Python脚本转EXE文件实战指南:从原理到操作全解析
本教程详解如何将Python脚本打包为EXE文件,涵盖PyInstaller、auto-py-to-exe和cx_Freeze三种工具,包含实战案例与常见问题解决方案,助你轻松发布独立运行的Python程序。
2001 2
|
8月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
1375 68
|
10月前
|
缓存 数据可视化 Linux
Python文件/目录比较实战:排除特定类型的实用技巧
本文通过四个实战案例,详解如何使用Python比较目录差异并灵活排除特定文件,涵盖基础比较、大文件处理、跨平台适配与可视化报告生成,助力开发者高效完成目录同步与数据校验任务。
309 0
|
11月前
|
安全 Linux 网络安全
Python极速搭建局域网文件共享服务器:一行命令实现HTTPS安全传输
本文介绍如何利用Python的http.server模块,通过一行命令快速搭建支持HTTPS的安全文件下载服务器,无需第三方工具,3分钟部署,保障局域网文件共享的隐私与安全。
2692 0
|
11月前
|
数据管理 开发工具 索引
在Python中借助Everything工具实现高效文件搜索的方法
使用上述方法,你就能在Python中利用Everything的强大搜索能力实现快速的文件搜索,这对于需要在大量文件中进行快速查找的场景尤其有用。此外,利用Python脚本可以灵活地将这一功能集成到更复杂的应用程序中,增强了自动化处理和数据管理的能力。
846 0
|
8月前
|
数据采集 运维 监控
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
本文系统解析爬虫与自动化核心技术,涵盖HTTP请求、数据解析、分布式架构及反爬策略,结合Scrapy、Selenium等框架实战,助力构建高效、稳定、合规的数据采集系统。
1217 62
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
|
9月前
|
运维 Linux 网络安全
自动化真能省钱?聊聊运维自动化如何帮企业优化IT成本
自动化真能省钱?聊聊运维自动化如何帮企业优化IT成本
267 4
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
465 4
|
11月前
|
运维 监控 安全
从实践到自动化:现代运维管理的转型与挑战
本文探讨了现代运维管理从传统人工模式向自动化转型的必要性与路径,分析了传统运维的痛点,如效率低、响应慢、依赖经验等问题,并介绍了自动化运维在提升效率、降低成本、增强系统稳定性与安全性方面的优势。结合技术工具与实践案例,文章展示了企业如何通过自动化实现运维升级,推动数字化转型,提升业务竞争力。

推荐镜像

更多