Markdown文件导出为HTML的小程序

为什么做

最近把一些学习经验记下来,总结成MarkDown文件,不知不觉已经有12篇了。
Sublime Text 的 MarkDown Preview 插件能够将MarkDown语法转换为HTML,并提供三种预览方式:浏览器预览、保存为HTML文件、输出到Sublime的新标签页。

但有一个缺点是,我有12个MarkDown文件,想分别转换为HTML文件,需要重复执行12次打开文件->Crtl+P调出命令面板->输入MarkDown Preview->选择Save To HTML->选择保存路径->确定

我突发奇想,Sublime是基于Python的,何不利用MarkDown Preview的API,写一个Python脚本,进行批量转换。这样,无论是12篇,还是120篇,都可以通过一个命令轻松完成转换,避免了重复劳动。

怎么做的

我通过Sublime的Preferences->Browse Packages找到了一个名为python-markdwon的文件夹,似乎是用来支持MarkDown转换的。
阅读了其中的__init__.py文件,了解到这个包可以将MarkDown转换为HTML。它提供了两个API:

  • html = markdown.markdown(your_text_string)

  • html = markdown.markdownFromFile(file_name)

如此简单易用,就是它了!

经过测试,markdown.markdownFromFile()这个函数对中文支持较差:如果文件内容含有汉字,转换后的html字符串出现奇怪的乱码。似乎可以提供附加参数指定编码格式,但我决定不去偷这个懒(好吧,其实是懒得去研究源代码)。

设计思路很简单:

  • 在指定文件夹内读取所有.md文件:

    for x in os.listdir('./input'): if os.path.splitext(x)[1]=='.md':...
  • 对每个.md文件,其内容是一个字符串

    with open('/path/file_name.md', 'r') as f:md = f.read()
  • 利用markdown.markdown()转换为HTML格式对字符串

    html = markdown.markdown(md)
  • 将HTML格式字符串写入到.html文件内

    with open('/path/file_name.html', 'w') as f:f.write(html)

当然,其中还要考虑路径、字符编码等问题。这里并没有列出,详细代码可参看下文。

怎么用

我建立了这样的文件结构:

 .|---markdown||---input|   |---1.md|   |---2.md||---output|   |---1.html|   |---2.html||---run.py||---empty_output.py
  • markdown文件夹是从Sublime插件目录的python-markdown直接复制过来的。

  • input文件夹内放的是转换前的MarkDown文件,目前只支持英文文件名。

  • output文件夹里是自动生产的转换后的HTML文件,与对应的MarkDown文件同名。

  • run.py是执行的脚本文件,用来将MarkDown转换为HTML。

  • empty_output.py用来清空output文件夹的内容,但不删除该文件夹。

运行步骤很简单:

  • 将MarkDown文件通通放入input文件夹下

  • 命令行执行python run.py

  • 去output文件夹下找转换后的文件

为什么只支持英文文件名呢?这个问题我也想解决,搜了一些博客,在MacOS下测试中文文件名都一切OK。但是换到了Windows下就翻脸不认人。还是我Python道行太浅,索性就只支持英文文件名吧。

做出了什么

这里贴一下run.pyempty_output.py的代码。最核心的转换算法python-markdown可以在GitHub上搜到。

整个程序的源码可以在这里得到。

run.py

    import osimport markdownimport codecsimport sysreload(sys)sys.setdefaultencoding('utf-8')input_dir = './input'ouput_dir = './output'input_file_type = '.md'ouput_file_type = '.html'print '\n'for full_input_file_name in os.listdir(input_dir):if os.path.splitext(full_input_file_name)[1]==input_file_type:print 'Converting ' + full_input_file_name + ' ...'file_name = os.path.splitext(full_input_file_name)[0]full_input_file_name = input_dir + '/' + full_input_file_namefull_ouput_file_name = ouput_dir + '/' + file_name + ouput_file_typewith codecs.open(full_input_file_name, 'r') as ifile:in_file_content = ifile.read()ou_file_content = markdown.markdown(in_file_content)with codecs.open(full_ouput_file_name, 'w', 'gbk') as ofile:ofile.write(ou_file_content)print '\nAll Done!'

empty_output.py

    import osimport markdownimport codecsimport sysreload(sys)sys.setdefaultencoding('utf-8')ouput_dir = './output'print '\n'for file_name in os.listdir(ouput_dir):print 'Deleting ' + file_name + ' ...'full_file_name = ouput_dir + '/' + file_nameos.remove(full_file_name)print '\nAll Done!'

转载于:https://www.cnblogs.com/gymmer/p/5991183.html

Markdown文件导出为HTML的小程序相关推荐

  1. 微信里文件小程序导不出来_懒得打开电脑传文件?这四类小程序把这事解决了-小程序视频怎么发在电脑上...

    在<小程序说·能力百科全书>前两期中,我们说到了小程序的"蓝牙能力".弱网环境下,它是篮球场上力挽狂澜的"第六人":出行场景中,它还能化身你的&qu ...

  2. 计算机网络 文件传输小程序代码,懒得打开电脑传文件?这四类小程序把这事解决了...

    生命在于静止,主持人吴昕这句火爆的口头禅,诠释了当代人对于"懒"的追求. 懒得出门吃饭,有外卖:懒得下载应用,有小程序... 在办公场景下,更是要"懒"到底,不 ...

  3. 微信小程序PHP文件建在哪里,微信小程序解析H5文件方法

    经常有网友问怎么让微信小程序解析H5文件或者类似封装H5网页到APP里面?我一开始觉得这是不可能的,因为官方的解答是这样的: 每一个小程序页面是由同路径下同名的四个不同后缀文件的组成,如:index. ...

  4. 微信小程序中base64转换成图片;uni-app小程序base64转图片;微信小程序base64文件转图片;微信小程序base64图片转图片

    将微信小程序的图片转成base64 点击此链接看另一篇 以下是将后端返回的base64转成图片: 方法1:使用微信小程序自带方法 //把base64转换成图片getBase64ImageUrl: (b ...

  5. canvas节点无法导出图片_开源小程序,练手必备,仿“美图秀秀”处理图片。

    微信小程序:图片裁剪.缩放.涂鸦.添加文字.拼长图.拼相框.表情包制作.便捷的图片编辑工具. 图片编辑小程序--HiPhoto 全能.便捷的图片编辑工具.实现了图片裁剪.添加文字.涂鸦.拼长图.拼相框 ...

  6. 如何将自己的文件进行加密?一个小程序的教你搞定

    最近在B站学了一个小技巧,写一个小程序来将自己的文件进行加密,这篇文章就用C语言来分享给大家. 首先我们知道,不管是什么文件,对电脑来说都只是一推0101的二进制数,既然这样,我们是不是可以将里面的二 ...

  7. 微信小程序,Eror代码包大小为12497kb,上限为 2048 kb,请删除文件后重试?微信小程序分包加载

    微信小程序如何解决预览超过2M的问题?微信小程序分包加载 在微信小程序开发过程中有个问题让人很头疼,就是预览的项目不能超过2M,我们的项目通常都会超过这个大小限制.那到底怎么解决呢?其实官方给出了解决 ...

  8. 小程序文章怎么导出来_微信小程序点餐怎么申请,怎么建立微信点单小程序

    微信点餐小程序/微信点餐商家版/微信点餐系统/微信点餐平台/点击上方"蓝字"关注我们我 怎么做微信小程序点餐 我们先要申请一个微信公众号,如果您有营业执照可以注册认证一个服务号 申 ...

  9. 小程序文章怎么导出来_宠物小程序怎么进行盈利

    现在很多的城市年轻人都喜欢养宠物,相信大家可以看到,宠物不仅可爱也给了人的陪伴,之前市场上关于宠物的服务并不是很多,而这些年随着人们的消费观念发生改变,宠物行业也成为了一个比较热门的行业,比如宠物食量 ...

最新文章

  1. 深入理解RunLoop(转载)
  2. sublimeText3 工具
  3. 打印两个有序链表的公共部分
  4. Hive(6)-DML数据操作
  5. Git学习03-----最基本的几个命令
  6. 天朝的单行道+csuoj+spfa算法求最短路
  7. uiautomatorviewer详解
  8. stm32命名规范总结
  9. 抖音怎么上传无损画质_抖音高清视频怎么上传的,抖音怎么上传无损画质
  10. C# socket通信 接收缓冲区大小设置,以及粘包问题的解决
  11. 应届毕业生:关于户口、档案、报到证、派遣证、就业协议书、劳动合同、社保等
  12. XenServer部署系列——网络配置
  13. python 波动率锥_期权波动率期限结构与日历价差策略
  14. 我的四轴飞行器经验总结(二)-无人机应用场景
  15. I - ICPC Awards(字符串)
  16. 高通 Msm835平台充电功能的开发与调试
  17. 索尼sr621sw和索尼sr626sw规格一样吗
  18. 代号“凤凰”,阿里新零售秘密武器,今年要打入100个城市...
  19. DNS服务器是如何工作的?
  20. 解决Google翻译不能使用的问题

热门文章

  1. Nike Kyrie 1 Performance Review
  2. [HNOI2009]梦幻布丁
  3. jsonp原生js跨域拿新浪数据插件封装【可扩展】
  4. Behave用户自定义数据类型
  5. vs里根据json快速创建对应类的方法
  6. Web测试容易忽略的地方
  7. 在bootstrap table中使用Tooltip
  8. bzoj [Usaco2009 Hol]Cattle Bruisers 杀手游戏
  9. Python中正则表达式讲解
  10. scapy 安装及简单测试