本帖最后由 wty1641 于 2019-12-27 10:29 编辑
正所谓,不会markdown的技术员不是老司机,自从用上markdown之后,人生又到了一波小高峰。有好东西怎么能不共享之,因此随之我不断的普(hu)及(you),终于办公室所有人都成功地开始使用了markdown。
结果有一天,漂亮的实习生小妹妹梨花带雨跑来要我负责。说是听了我的话,markdown好用到停不下来,结果今天报材料.md格式文件对方打不开,要求只要word版的,你要负责……。我说何等小事如此大惊小怪,现在办公室里markdown编辑器用的都是Typora,本身就具备md格式导出为docx的功能,导出一下就ok了。
妹子说,来来来,这里500多文件你给我都转成docx的……
扶危济困正是我辈所为,但是我要也一个一个转,那岂不是要到猴年马月去,还怎么维持住办公室一哥的形象,怎么看到妹子眼睛里的小星星,怎么让妹子请我吃饭,怎么…………咳
这里我们就要用到一个专门用来转换格式的神器:pandoc,可以通过命令行命令实现格式转换的工具,目前版本更新到2.9.1。
主站链接:https://pandoc.org/index.html Github:https://github.com/jgm/pandoc/releases 既然是通过命令行解决问题的工具,那我们就拿来搞很多事情。下载完成之后解压缩,
这里面有个关键步骤,要想使该工具在cmd中可以直接被调用,需要将主文件加入到环境变量中。
配置环境变量中加入:
到这里我们就可以在命令行工具中直接调用pandoc来处理文件了。
只需要调用命令:pandoc ~.md -o ~docx 即可。
测试:Pandoc e:\md测试\ input_definition_2.md -o e:\md测试\ input_definition_2.docx
转换的准确率非常高。
那么我们就要开始用python搞事情了。
思路很简单,批量将后缀名为.md格式的文件通过pandoc转换成docx的文件。
[Python] 纯文本查看 复制代码 # -*- coding:utf-8 *-
#导入os模块
import os
dir = r'e:\md测试'
#调用os.walk读取文件名,os.path.splitext筛选后缀名为.md格式的文件,使用os.system在命令行中输入
def path(dir):
for x, y, z in os.walk(dir):
for name in z:
a = os.path.splitext(name)[1]
if a == '.md':
file_path = x + '\\' + name
print('pandoc ' + '"' + file_path + '"' + ' -o ' + x + '\\' + os.path.splitext(name)[0] + '.docx')
os.system('pandoc ' + '"' + file_path + '"' + ' -o ' + '"' + x + '\\' + os.path.splitext(name)[
0] + '.docx' + '"')
if __name__ == '__main__':
path(dir)
这样就行了。
需要注意是的,在os.system中,涉及到目录中含有特殊字符(包括空格)在内的部分,需要将目录部分用双引号包裹起来,这样才能正常识别目录地址。测试结果:
正篇部分到此结束,附上pandoc官方给出的可转换类型:
话说,妹子说晚上请我去她家吃饭,我应该怎么回呢,在线等挺急的。
首发知乎,欢迎关注:若尘公子码字码码都不易,点赞收藏关注来一波。 |