cmd调用i5ting_toc批量生成HTML文件

1 篇文章 0 订阅
1 篇文章 0 订阅

思路

  1. 百度搜索是否有.md文件转HTML的工具方向没有但是有单个转换的工具。
  2. 分析工具如何使用,如何实现批量化。
  3. 方向工具是通过命令行来运行,所以可以编写一个cmd命令行批量执行工具
  4. 首先要实现遍历所以有文件,筛选出文件后缀为.md的文件。
  5. 在是拼接cmd命令,进行执行
  6. 得到需要的HTML文件

实现

初识i5ting_toc

Typora编辑器 上,只要标题层级正确,转成 PDF 时,就会自动生成目录,方便我们阅读。

有时我个人觉得,转成 html 阅读起来会更方便。但Typora编辑器 导出成 html 格式时,是不会自动帮我们生成目录的。

在网上搜索了一大遍,发现网上的教程,要么是通过在转成出的 html 源码下加入一段很长的代码,生成之后也不雅观,而且每次这样也不方便。要么是通过 vscode 的插件来生成,但生成的目录是在上方的,而不是我们想要的在侧方。

最后发现,i5ting_toc 这个工具,非常方便,而且转换出来的也很美观。

先看效果图:

img

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rc6WZyZN-1617073712543)(图片\image-20210324201110355.png)]

使用

安装
npm install i5ting_toc -g 
使用方法

切换到你想要转换的md文件根目录下,使用以下命令, -f 参数后面跟着文件名,如果没有填写,默认使用 README.md

i5ting_toc -f 文件名.md -o

运行成功之后则在当前目录下生成一个preview文件夹

img

常见的命令参数如下:

-h, –help output usage information(帮助输出使用信息)
-V, –version output the version number(版本输出版本号)
-f, –file [filename] default is README.md(文件[filename]默认为自述文件.md)
-o, –open open in browser(在浏览器中打开)
-v, –verbose 打印详细日志

分析

  1. 通过上面的认识发现使用"i5ting_toc " 只能一个一个的编译.md文件时分的不方便
  2. 分析”i5ting_toc -f 文件名.md -o“命令发现生成不同的文件只是换一下文件名。(可以使用字符串拼接)
  3. 一个文件夹下面有不同的文件和文件夹使用我们要对其进行遍历筛选。
  4. 然后运行

编码

如何使用编程语言打开cmd窗口并运行命令

Python调用cmd

Python经常需要用作系统脚本,调用cmd或者shell能够大大提高工作效率。


1. os.system

使用os.system是最简单直观的调用方法:

import os
cmd = 'ls'
os.system(cmd)

这个方法虽然简单,但有一个极大的缺点,无法获得cmd命令的输出。很难做进一步操作。对于’mv’,‘cp’这种没有输出的命令行,可以首先推荐使用这个方法。而对于’ls’,'echo’等有输出的命令行,这个方法就不推荐使用了。


2. os.popen

同样基于os模块来调用,但os.popen可以以字符串形式获得shell下的输出,实现如下:

import os
cmd = 'ls'
res = os.popen(cmd)
output_str = res.read()   # 获得输出字符串
print(output_str)

使用os.popen可以获得输出,而且操作相对也比较简便。


3. subprocess.Popen

这种方法略复杂,而且目前还没有发现有什么太大的优势,所以没有看。

获取遍历文件

使用os类的walk方法(import os),获取文件夹下所有根目录roots、文件夹dirs和文件files。这里只要文件就行,遍历文件夹下所有的文件,确定指定类型的文件添加到列表。
有两种方法确定:

  1. 判断扩展名是否在文件路径中
  2. os.path.splitext()分离扩展名,判断是否与指定类型相同
def get_filename(path,filetype):  # 输入路径、文件类型例如'.csv'
    name = []
    for root,dirs,files in os.walk(path):
        for i in files:
            if os.path.splitext(i)[1]==filetype:#==可以写成is
                name.append(i)    
    return name            # 输出由有后缀的文件名组成的列表

cmd 命令拼接

  1. 首先i5ting_toc -f 文件名.md -o命令是在文件目录下的cmd窗口运行(要实现文件空间的切换)
  2. os.popen运行两个命令要用&&连接

​ 比如:先后执行两个CMD命令;两个命令之间要’&&'连接

cmd = cmd1 + '&&' + cmd2

cd到某一个路径下,执行某一条命令

开始编写

代码

成品

成品

不足

对文件名中的特殊字符转换有问题,会被抛弃。导致被转到文件名与转换后的文件名不一致

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值