半自动化生成README.md文件-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

半自动化生成README.md文件

简介: 前言 实现 获取指定路径下所有文件的全路径 获取文件描述信息 生成readme 效果 总结 前言 最近一直在准备面试啊笔试啊什么的,写着写着代码就很多了。

前言

最近一直在准备面试啊笔试啊什么的,写着写着代码就很多了。又不能每一个代码都写成博客,要不然质量也没法保证。于是想着在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上直接点这些链接,就可以看到内容了。

总结

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

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: