Markdown文件导出为HTML的小程序
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.py
和empty_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的小程序相关推荐
- 微信里文件小程序导不出来_懒得打开电脑传文件?这四类小程序把这事解决了-小程序视频怎么发在电脑上...
在<小程序说·能力百科全书>前两期中,我们说到了小程序的"蓝牙能力".弱网环境下,它是篮球场上力挽狂澜的"第六人":出行场景中,它还能化身你的&qu ...
- 计算机网络 文件传输小程序代码,懒得打开电脑传文件?这四类小程序把这事解决了...
生命在于静止,主持人吴昕这句火爆的口头禅,诠释了当代人对于"懒"的追求. 懒得出门吃饭,有外卖:懒得下载应用,有小程序... 在办公场景下,更是要"懒"到底,不 ...
- 微信小程序PHP文件建在哪里,微信小程序解析H5文件方法
经常有网友问怎么让微信小程序解析H5文件或者类似封装H5网页到APP里面?我一开始觉得这是不可能的,因为官方的解答是这样的: 每一个小程序页面是由同路径下同名的四个不同后缀文件的组成,如:index. ...
- 微信小程序中base64转换成图片;uni-app小程序base64转图片;微信小程序base64文件转图片;微信小程序base64图片转图片
将微信小程序的图片转成base64 点击此链接看另一篇 以下是将后端返回的base64转成图片: 方法1:使用微信小程序自带方法 //把base64转换成图片getBase64ImageUrl: (b ...
- canvas节点无法导出图片_开源小程序,练手必备,仿“美图秀秀”处理图片。
微信小程序:图片裁剪.缩放.涂鸦.添加文字.拼长图.拼相框.表情包制作.便捷的图片编辑工具. 图片编辑小程序--HiPhoto 全能.便捷的图片编辑工具.实现了图片裁剪.添加文字.涂鸦.拼长图.拼相框 ...
- 如何将自己的文件进行加密?一个小程序的教你搞定
最近在B站学了一个小技巧,写一个小程序来将自己的文件进行加密,这篇文章就用C语言来分享给大家. 首先我们知道,不管是什么文件,对电脑来说都只是一推0101的二进制数,既然这样,我们是不是可以将里面的二 ...
- 微信小程序,Eror代码包大小为12497kb,上限为 2048 kb,请删除文件后重试?微信小程序分包加载
微信小程序如何解决预览超过2M的问题?微信小程序分包加载 在微信小程序开发过程中有个问题让人很头疼,就是预览的项目不能超过2M,我们的项目通常都会超过这个大小限制.那到底怎么解决呢?其实官方给出了解决 ...
- 小程序文章怎么导出来_微信小程序点餐怎么申请,怎么建立微信点单小程序
微信点餐小程序/微信点餐商家版/微信点餐系统/微信点餐平台/点击上方"蓝字"关注我们我 怎么做微信小程序点餐 我们先要申请一个微信公众号,如果您有营业执照可以注册认证一个服务号 申 ...
- 小程序文章怎么导出来_宠物小程序怎么进行盈利
现在很多的城市年轻人都喜欢养宠物,相信大家可以看到,宠物不仅可爱也给了人的陪伴,之前市场上关于宠物的服务并不是很多,而这些年随着人们的消费观念发生改变,宠物行业也成为了一个比较热门的行业,比如宠物食量 ...
最新文章
- 深入理解RunLoop(转载)
- sublimeText3 工具
- 打印两个有序链表的公共部分
- Hive(6)-DML数据操作
- Git学习03-----最基本的几个命令
- 天朝的单行道+csuoj+spfa算法求最短路
- uiautomatorviewer详解
- stm32命名规范总结
- 抖音怎么上传无损画质_抖音高清视频怎么上传的,抖音怎么上传无损画质
- C# socket通信 接收缓冲区大小设置,以及粘包问题的解决
- 应届毕业生:关于户口、档案、报到证、派遣证、就业协议书、劳动合同、社保等
- XenServer部署系列——网络配置
- python 波动率锥_期权波动率期限结构与日历价差策略
- 我的四轴飞行器经验总结(二)-无人机应用场景
- I - ICPC Awards(字符串)
- 高通 Msm835平台充电功能的开发与调试
- 索尼sr621sw和索尼sr626sw规格一样吗
- 代号“凤凰”,阿里新零售秘密武器,今年要打入100个城市...
- DNS服务器是如何工作的?
- 解决Google翻译不能使用的问题