我在写博客《Linux的1000个命令》的时候,相对二级标题进行一下排序,方便阅读和查找,于是就有了这个小程序。

#! /usr/bin/env python3

import os
import subprocess class BaseMethod:
@staticmethod
def run_cmd(cmd):
retcode, output = subprocess.getstatusoutput(cmd)
return retcode, output @staticmethod
def write_file(filename, content):
with open(filename, 'w', encoding='UTF-8')as tf:
tf.write(content) @staticmethod
def read_file(file_name, mode="r"):
if not os.path.exists(file_name):
raise IOError("No such file or directory: %s" % file_name)
with open(file_name, mode, encoding='UTF-8')as fp:
content = fp.read()
return content f="linux.md" class SortMD:
def __init__(self, filename):
# self.filename = filename
self.content = BaseMethod.read_file(filename)
self.data = {} def split_now(self):
sharp2 = self.content.split('##') for i in sharp2:
if i.startswith('#'):
self.data['sharp1'] = i
else:
if 'sharp2' in self.data.keys():
self.data['sharp2'].append('## '+i.strip('\n'))
else:
self.data['sharp2'] = ['##' + i.strip('\n')] print(self.data)
self.data['sharp2'].sort()
print(self.data) def save2file(self, name):
s1 = self.data['sharp1']
s2 = "\n\n".join(self.data['sharp2'])
data = s1 + s2
print(data)
BaseMethod.write_file(name, data) def main():
md = SortMD(f)
md.split_now()
md.save2file("new.md") if __name__ == "__main__":
main()

一个简单的将Markdown二级标题进行排序的脚本的更多相关文章

  1. htpwdScan — 一个简单的HTTP暴力破解、撞库攻击脚本

    李姐姐之前跟我们分享了子域名枚举工具subDomainBrute<subDomainsBrute — 改进渗透测试时暴力枚举子域名的python脚本>,这回带给我们htpwdScan ht ...

  2. 【咸鱼教程】一个简单的弹出二级菜单UIPopupMenu

    一. 实际效果 演示地址 二.实现原理主要用Button+List组件,和遮罩实现. 1. 点击Button时,将List下移展开.2. 再次点击Button,或者选中List中的某一项时,将List ...

  3. 制作一个简单的部门员工知识分享的python抽取脚本

    需求: 基于公司的文化和公司部门间以及员工之间的工作需求状态,或者想要了解某一些技能.专业方面的知识需求.促进并提高员工们的技能认知和技术水平. 详细代码如下: 先说一下存入csv表格的表头字段: 1 ...

  4. 使用 java 实现一个简单的 markdown 语法解析器

    1. 什么是 markdown Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown 的 ...

  5. HTTP lab01 做一个简单的测试用 web页面

      做一个简单的测试用 web页面     1.安装httpd服务   yum install httpd   安装完httpd服务后,系统就自动生成了/var/www/html目录     创建一个 ...

  6. perl 引用(数组和hash引用) --- perlreftut - Mark 的一个简单的'引用'教程 ---Understand References Today. --Mark Jason Dominus, Plover Systems (mjd-perl-ref+@plover.com)

    https://blog.csdn.net/fangwei1235/article/details/8570886 首页 博客 学院 下载 论坛 APP 问答 商城 活动 VIP会员 招聘 ITeye ...

  7. 实现一个简单的侧边导航Winform程序框架

    目录 简介 实现导航面板 实现方法 使用方法 实现标题栏 窗体拖拽及最大化 自定义窗体按钮 标题显示 按钮设置 实现状态栏 整体使用 参考文章 简介 每次新项目都要想着界面怎么设计好,但想来想去上位机 ...

  8. ASP.NET Aries 入门开发教程2:配置出一个简单的列表页面

    前言: 朋友们都期待我稳定地工作,但创业公司若要躺下,也非意念可控. 若人生注定了风雨飘摇,那就雨中前行了. 最机开始看聊新的工作机会,欢迎推荐,创业公司也可! 同时,趁着自由时间,抓紧把这系列教程给 ...

  9. 一个简单的消息提示jquery插件

    最近在工作中写了一个jquery插件,效果如下: 就是一个简单的提示消息的一个东西,支持最大化.最小化.关闭.自定义速度.自定义点击事件,数据有ajax请求和本地数据两种形式.还有不完善的地方,只做了 ...

随机推荐

  1. __str__ 和 __repr

    #1 默认类里面默认提供的__str__方法,是返回类的内存地址class foo: def __init__(self): pass #2 修改类里面默认提供的__str__方法class fun: ...

  2. python批量处理文件夹中文件的问题

    用os模块读取文件夹中文件 原来的代码: import osfrom scipy.misc import imread filenames=os.listdir(r'./unprocess')for ...

  3. js:捕获冒泡和事件委托

    一.事件流(捕获,冒泡)   事件流:指从页面中接收事件的顺序,有冒泡流和捕获流. 当页面中发生某种事件(比如鼠标点击,鼠标滑过等)时,毫无疑问子元素和父元素都会接收到该事件,可具体顺序是怎样的呢?冒 ...

  4. postgresql数据库varchar、char、text的比较

    名字 描述character varying(n), varchar(n) 变长,有长度限制character(n), char(n) 定长,不足补空白text 变长,无长度限制简单来说,varcha ...

  5. windows from docker 安装部署spring jar包方法

    1.安装docker for windows,去官网下载就可以了,按照官网安装 2.把jar和dockerfile放在一个目录下(target 目录下) Dockerfile: FROM java:8 ...

  6. VMware虚拟机配置嵌套虚拟化

    VMware虚拟机下创建kvm-sever,server下继续创建kvm虚拟机(嵌套虚拟化),返回libvirt错误解决办法:SSH连接VMwarevi /etc/vmware/config增加一行设 ...

  7. linux 下将tomcat注册成服务并开机启动

    一.将startup.sh和shutdown.sh新建软连接到/usr/bin ln -s /usr/local/apache-tomcat-8.5.38/bin/startup.sh /usr/bi ...

  8. linux环境下安装oracle步骤和自启动oracle

    oracle安装步骤 一.创建用户 --注释-- /etc/passwd 用户配置文件 /etc/shadow 用户密码文件 /etc/group 组 组用户文件/etc/gshadow 组密码文件 ...

  9. CentOS7 下使用root免密码输入自动登入gnome桌面

    如果系统默认启动图形界面: vi /etc/gdm/custom.conf #找到[daemon],修改为下面的 [daemon] AutomaticLoginEnable=true Automati ...

  10. android 隐藏虚拟按钮栏及标题等权限设置

    华为手机有虚拟按钮,根据以下设置方法可以进行隐藏控制 /** * 隐藏虚拟按键,并且全屏 */ protected void hideBottomUIMenu(Context context){ if ...