半自动化生成README.md文件

前言

最近一直在准备面试啊笔试啊什么的,写着写着代码就很多了。又不能每一个代码都写成博客,要不然质量也没法保证。于是想着在GitHub上建一个repository好了。整理进去,也保证了代码的安全性,万一以后要复习了也很方便。

但是面临的一个问题就是“懒”,面对看起来蛮多的文档,一个一个的写标签似乎不是合适的选择,所以还是让程序帮我自动生成吧。

实现

实现所需步骤如下:

  • 获取给定路径下的所有文件的全路径
  • 获取每一个文件内特有的描述信息
  • 将全路径和描述信息写到readme文件中

下面就一一来实现这些步骤。

获取指定路径下所有文件的全路径

由于不知道文件夹下具体是什么情况,所以递归是一个比较贴切的选择。

def pathwalk(path='.', result=[]):
    dirlist = os.listdir(path=path)

    for item in dirlist:
        child = os.path.join(path, item)
        if os.path.isfile(child):
            result.append(child)
            # print(child)
        else:
            pathwalk(child, result)

获取文件描述信息

我个人写代码会使用IDE在新建文件的时候生成一些固定格式的内容,大致如下:

# coding: utf8

# @Author: 郭 璞
# @File: mkreadme.py                                                                 
# @Time: 2017/4/14                                   
# @Contact: 1064319632@qq.com
# @blog: http://blog.csdn.net/marksinoberg
# @Description: 将当前目录中所有的文件生成markdown文件特有的链接形式

每一个文件的Description部分都是不一样的。一般按照代码实现的功能来描述,这样即使过了好几天,也能快速的理解代码到底做了什么。我觉得这是个不错的习惯,共勉。

获取的方式也很简单,利用字符串内置的匹配即可。

def getdescription(list):
    return "".join([str(item) for item in list if "@Description:" in str(item)])

我们把文件读成list内容,然后对含有描述信息的元素提取出来即可。(因为格式比较特殊,所以很少会有不相干的元素混入,虽然也会有这个可能。)

得到具体的描述信息还需要下面的处理:

temp = getdescription(f.readlines())
temp = temp[15:]

生成readme

GitHub上的README.md文件是使用的Markdown格式,所以接下来简要的生成Markdown格式的内容,然后追加到文件中就好了。

def generate(files=[], outputpath='./readme.md'):
    info = {}
    for file in files:
        if 'readme.' in str(file):
            continue
        with open(file, 'r', encoding='utf8') as f:
            temp = getdescription(f.readlines())
            temp = temp[15:]
            info[str(file)] = temp
            f.close()
    # print(len(info), info)
    info = {k:v for k,v in info.items() if v!='' and 'readme.' not in str(k)}
    print(len(info), info)

    # 生成Markdown文件
    with open(outputpath, 'a', encoding='utf8') as f:
        # f.write('标题部分\n---')
        for key, value in info.items():
            temp = " - [{}]({})\n\n".format(value, key)
            f.write(temp)
        f.close()
    print('文件已生成!')

效果

最后来看下实现的最终效果。
半自动化readme文件生成

看起来还算是差强人意。

最后要注意的是,在上传到GitHub上的时候,目录信息需要更新一下,加个前缀啥的,这样可以再GitHub上直接点这些链接,就可以看到内容了。

总结

虽然这个脚本不算啥,但是确实是挺实用的(对我个人而言)。需要改进的地方还有很多,标题啊,缩进列表啊,表格啊,什么的都需要实现一下,这样才算是有价值,不过对我而言,目前也就需要这么点功能了。就先不折腾了。

就先到这吧,还得继续学习呢。 (^__^) 嘻嘻……

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值