python 自动化将markdown文件转成html文件的方法
一、背景
我们项目开发人员写的文档都是markdown文件。对于其它组的同学要进行阅读不是很方便。每次编辑完markdown文件,我都是用软件将md文件转成html文件。刚开始转的时候,还没啥,转得次数多了,就觉得不能继续这样下去了。作为一名开发人员,还是让机器去做这些琐碎的事情吧。故写了两个脚本将md文件转成html文件,并将其放置在web服务器下,方便其他人员阅读。
主要有两个脚本和一个定时任务:
•一个python脚本,主要将md文件转成html文件;
•一个shell脚本,主要用于管理逻辑;
•一个linux定时任务,主要是定时执行shell脚本。
二、用python将markdown转成html
2.1python依赖库
使用python的markdown库来转换md文件到html依赖两个库:
•pipinstallmarkdown
•pipinstallimportlib
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.3html编码和html样式
直接markdown.markdown(text)生成的html文本,非常粗略,只是单纯的html内容。而且在浏览器内查看的时候中文乱码(在chrome中),没有好看的css样式,太丑了。
解决办法也很简单,在保存文件的时候,将<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>和css样式添加上。就这么简单解决了。
2.4完整python内容
•读取md文件;
•将md文件转成html文本;
•添加css样式和保存html文本。
python代码内容:
#!/usr/bin/envpython #-*-coding:utf-8-*- #使用方法pythonmarkdown_convert.pyfilename importsys importmarkdown importcodecs css=''' <metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/> <styletype="text/css"> <!--此处省略掉markdown的css样式,因为太长了--> </style> ''' defmain(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);
•执行pythonmarkdown_convert.py$NAME将md文件转成html文件(生成测试文档.html);
•将转好的html迁移到web路径下(移动到html/测试文档.html);
•启动一个web服务(此处用的是python的SimpleHTTPServer的web服务器).
3.2完整shell逻辑
#!/bin/bash NAME='测试文档' ##更新代码 svnupdate ##删除html文件 if[-f"$NAME.html"];then rm"$NAME.html" fi ##生成html if[-f"$NAME.md"];then pythonmarkdown_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=`psaux|grep'python-mSimpleHTTPServer8080'|grep-v'grep'|awk'{print$2}'` if["$PID"=""];then cdhtml nohuppython-mSimpleHTTPServer8080& echo'startwebserver' else echo'alreadystart' fi
四、linux定时任务
在shell命令下输入crontab-e进入linux定时任务编辑界面。在里面设置markdown2web.sh脚本的定时任务:
##更新文档 */10****cd/home/xxx/doc;shmarkdown2web.sh>/dev/null2>&1
以上所述是小编给大家介绍的python自动化将markdown文件转成html文件的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!