自制 Python小工具 将markdown文件转换成Html文件
来源:互联网 发布:用友nc java版本win7 编辑:程序博客网 时间:2024/05/22 17:39
今天看到了一个Python库,名为markdown。瞬间就给了我一个灵感,那就是制作一个将markdown文件转换成html文件的小工具。
我的实验环境
- 操作系统: Windows 7 64位 旗舰版
- Python版本: 2.7.11
- IDE: PyCharm pro 2016.1
- 所需依赖:
- optparser
- markdown
转换核心
转换的过程很简单,只需要使用markdown库即可,具体使用方法如下:
from markdown import markdowndef parse(md_text): return markdown(md_text)
优化
为了使我们的程序更具特色,也就是类Unix命令行风格。我这里添加了optparser的支持。
核心代码如下:
# OptParser库规范性用法,以实现Unix风格的命令行处理程序usage = \ """ '-i', --infile . source markdown file '-o', --outfile. target html file '-s', --style. stylesheet for output html file,this is not for mandatory """parser = optparse.OptionParser(usage)parser.add_option('-i', '--input', dest='infile', type='string', help='input markdown source file')parser.add_option('-o', '--output', dest='outfile', type='string', help='out put html file')(options, args) = parser.parse_args()infile = options.infileoutfile = options.outfile
举例:
python md2html.py -i input.md -o outputfile.html# 我们在命令行输入的参数就会转移到下面的两个变量中了(options, args) = parser.parse_args()infile = options.infileoutfile = options.outfile
美化
为了使得我们的html更加的美观,我这里采取了BootStrap进行了美化。使用的方式是CDN的方式。这样可以使得我们的文件目录更加的清爽,而且可以给用户一个更加简便的使用体验。
使用的模板如下:
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>BootStrap模板</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- 引入 Bootstrap --> <link href="http://apps.bdimg.com/libs/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet"> <link href="http://apps.bdimg.com/libs/bootstrap/css/bootstrap.min.css" rel="stylesheet"> <script src="js/jquery-2.2.4.min.js"></script> <script src="http://apps.bdimg.com/libs/bootstrap/js/bootstrap.min.js"></script></head><body></body><!-- jQuery (Bootstrap 的 JavaScript 插件需要引入 jQuery) --> <script src="https://code.jquery.com/jquery.js"></script> <!-- 包括所有已编译的插件 --> <script src="js/bootstrap.min.js"></script></html>
完整代码
# coding:utf-8# __author__ = 'Mark sinoberg'# __date__ = '2016/7/8'# __Desc__ = 将markdown文件转换为带有样式的html文件from markdown import markdownimport optparse# 创建一个专门用于处理解析器的工具类class MDParser: # 初始化开始 def __init__(self): print 'Ready to parser markdown source file to html file.' # 创建一个对输入文件进行解析的方法,输出文件即为符合html语法的不完整文件 def parsre(self, infile): infile = open(infile, 'rb') indata = infile.read() indata = u'%s' % indata infile.close() parsedata = markdown(indata) return parsedata # 为输出文件添加自定义标题,并且添加缺少的html头部 def appendHead(self, data, title): head = \ """ <html><head><meta charset='utf-8'><title>%s</title><meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="http://apps.bdimg.com/libs/bootstrap/3.3.0/css/bootstrap.min.css"> <script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script> <script src="http://apps.bdimg.com/libs/bootstrap/3.3.0/js/bootstrap.min.js"></script></head><body><div class='container'><div class="row-fluid"> <div class="span12"> """ % title newdata = head + data return newdata # 配合上面的添加头部文件,下面的这个方法适用于添加html尾部标签,使得文件符合html规范 def appendTail(self, data): tail = \ """ </div></div></div><script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script> <script src="http://apps.bdimg.com/libs/bootstrap/3.2.0/js/bootstrap.min.js"></script></body></html> """ data += tail return data # 将完整的html文件输出到指定的位置 def output(self, data, outfile): outfile = open(outfile, 'wb') outfile.write(data) outfile.close() print "Translated Succeed!"# OptParser库规范性用法,以实现Unix风格的命令行处理程序usage = \ """ '-i', --infile . source markdown file '-o', --outfile. target html file '-s', --style. stylesheet for output html file,this is not for mandatory """parser = optparse.OptionParser(usage)parser.add_option('-i', '--input', dest='infile', type='string', help='input markdown source file')parser.add_option('-o', '--output', dest='outfile', type='string', help='out put html file')(options, args) = parser.parse_args()infile = options.infileoutfile = options.outfileif __name__ == "__main__": tool = MDParser() title = raw_input('Please input the title you want:\n') parsedata = tool.parsre(infile) data = tool.appendHead(parsedata, title) fulldata = tool.appendTail(data) tool.output(fulldata, outfile)
结果展示
- 程序运行前
infile.md内容:
程序运行方法:
生成结果
缺点
这个工具最大的缺点就是不能将中文进行转换,原因是ascii码超出字符限制。
如果大家有更好的方法,不妨私信我! 大家一起学习!
我的DocUtil
https://github.com/guoruibiao/DocUtil。
欢迎拍砖!
2 0
- 自制 Python小工具 将markdown文件转换成Html文件
- 自制的批量文件复制小工具
- 将html代码转换成js字符串的小工具
- python 文件合并小工具
- python小工具--将csv文件转化为图像
- Python 文件重命名的小工具
- 【自制】前端html代码格式化小工具
- 自制Python函数帮助查询小工具
- 文件提取小工具
- 文件搜索小工具
- bat启动class文件,自制带目录结构的文件内容加密小工具
- 通过Python-markdown 将markdown转换成html
- 将WORD文件转换成HTML文件
- 将PPT文件转换成HTML文件
- 将EXCEL文件转换成HTML文件
- 将WORD文件转换成HTML文件
- 将html文件转换成jsp文件
- 将C++转换成VB,C#语言小工具介绍
- HDU2151
- 组播Multicast 2 PIM
- 【CF 609E】Street
- hdu_5589_Tree(莫队+字典树)
- 添加下拉刷新
- 自制 Python小工具 将markdown文件转换成Html文件
- 很好的wkwebview文档
- 5-1 字符串转换成十进制整数 (15分) (这是补上的7月6号)
- C++之运算法重载详解
- 基于Flume的美团日志收集系统(一)架构和设计
- js 用defaultValue 模拟重置键 reset
- hdu 2570 迷瘴
- 【NOIP2013中秋节模拟】长方形(rectangle)
- 组播Multicast 3 PIM的两种模式