python 自動化將markdown文件轉(zhuǎn)成html文件的方法
一、背景
我們項目開發(fā)人員寫的文檔都是markdown文件。對于其它組的同學(xué)要進行閱讀不是很方便。每次編輯完markdown文件,我都是用軟件將md文件轉(zhuǎn)成html文件。剛開始轉(zhuǎn)的時候,還沒啥,轉(zhuǎn)得次數(shù)多了,就覺得不能繼續(xù)這樣下去了。作為一名開發(fā)人員,還是讓機器去做這些瑣碎的事情吧。故寫了兩個腳本將md文件轉(zhuǎn)成html文件,并將其放置在web服務(wù)器下,方便其他人員閱讀。
主要有兩個腳本和一個定時任務(wù):
•一個python腳本,主要將md文件轉(zhuǎn)成html文件;
•一個shell腳本,主要用于管理邏輯;
•一個linux定時任務(wù),主要是定時執(zhí)行shell腳本。
二、用python將markdown轉(zhuǎn)成html
2.1 python依賴庫
使用python的markdown庫來轉(zhuǎn)換md文件到html依賴兩個庫:
•pip install markdown
•pip install importlib
2.2 核心代碼
核心代碼其實只有一句,執(zhí)行 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內(nèi)容。而且在瀏覽器內(nèi)查看的時候中文亂碼(在chrome中),沒有好看的css樣式,太丑了。
解決辦法也很簡單,在保存文件的時候,將<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />和css樣式添加上。就這么簡單解決了。
2.4 完整python內(nèi)容
•讀取md文件;
•將md文件轉(zhuǎn)成html文本;
•添加css樣式和保存html文本。
python代碼內(nèi)容:
#!/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文件更新下來(此處假設(shè)md文件是測試文檔.md);
•執(zhí)行python markdown_convert.py $NAME將md文件轉(zhuǎn)成html文件(生成測試文檔.html);
•將轉(zhuǎn)好的html遷移到web路徑下(移動到html/測試文檔.html);
•啟動一個web服務(wù)(此處用的是python的SimpleHTTPServer的web服務(wù)器).
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服務(wù)器 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定時任務(wù)
在shell命令下輸入crontab -e進入linux定時任務(wù)編輯界面。在里面設(shè)置markdown2web.sh腳本的定時任務(wù):
## 更新文檔 */10 * * * * cd /home/xxx/doc; sh markdown2web.sh > /dev/null 2>&1
以上所述是小編給大家介紹的python 自動化將markdown文件轉(zhuǎn)成html文件的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
pycharm中代碼回滾到指定版本的兩種實現(xiàn)方法(附帶截圖展示)
在編寫代碼的時候,經(jīng)常會出現(xiàn)寫的代碼存在一些問題,但是比較難以發(fā)現(xiàn)具體存在的問題在哪里,需要將帶代碼恢復(fù)到指定的版本,下面這篇文章主要給大家介紹了關(guān)于pycharm中代碼回滾到指定版本的兩種實現(xiàn)方法,需要的朋友可以參考下2022-06-06Python利用hashlib實現(xiàn)文件MD5碼的批量存儲
這篇文章主要為大家詳細介紹了如何用Python和hashlib實現(xiàn)文件MD5碼的批量存儲功能,文中的示例代碼講解詳細,感興趣的小伙伴可以學(xué)習(xí)一下2023-05-05Python異常信息的不同展現(xiàn)方法總結(jié)
在日常開發(fā)的過程中,當代碼報錯時,我們通常要不斷打印、閱讀traceback提示信息,來調(diào)試代碼,這篇文章介紹了如何實現(xiàn)一個Exception?Hooks,使得traceback模塊的提示信息更加精確;同時還介紹了一些第三方庫,這些庫也提供了Exception?Hooks的功能2022-11-11深度解析Django REST Framework 批量操作
這篇文章主要介紹了深度解析Django REST Framework批量操作,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05