Python定制自己的实体类说明文档生成工具

辛苦堆砌,转载请注明出处,谢谢!

最近项目中,定义了不少实体类,但是讨厌的是,需要写说明文档,这个工作可是重复性很高的工作,我需要从IDE复制实体类的变量名,打开word文档,粘贴在对应的表格位置上,然后再打开IDE复制注释,也就是这个字段的说明,再打开word,粘贴到这个表格位置上,更可恶的是,还有JSON串的参数说明,我还要再复制一遍,整个过程无趣的很,手也累的够呛。


今天复制了三个实体类,就感到无比厌烦,回家想了想,为什么不用Python自动化这个过程呢?想到了就开动吧,假设我有实体类如下所示:

public class User {

	//用户名
    private String username;
	
	//密码
	private String password;
	
	public void setUsername(String username) {
		this.username = username;
	}
	
	public String getUsername() {
		return username;
	}
	
	public void setPassword(String password) {
		this.password = password;
	}
	
	public String getPassword() {
		return password;
	}
}


这个就是我个人的编码习惯,实体类定义,我总会将私有字段放在最前面,然后是注释要加全,既然我很熟悉我的习惯,我就将他自动化,感觉还是不错的,下面是我的python脚本,使用了python-docx模块,需要pip安装才能使用。

import os, sys, docx

#创建一个doc对象,以写入表格和段落
doc = docx.Document()

#遍历当前目录,一般为存放实体类的目录
for fileName in os.listdir('.'):

    #查找java文件
    if fileName.endswith('.java'):

        #保存变量和注释的列表,使用列表为了有序
        varNameAndCommentList = []

        #打开Java文件
        javaFile = open(fileName, encoding='utf-8')

        #循环处理每一行
        line = javaFile.readline()
        while line:

            #去除每行的行首和行尾的空白字符
            line = line.strip()

            if line.startswith('public'):
                #如果到达公有字段,退出循环
                break;
            elif line.startswith('//'):
                #如果是注释行,保存注释
                comment = line.lstrip('//')

                #读取注释下面一行
                declare = javaFile.readline().strip()

                #检查是否是private字段,自由这样才是属性字段
                if declare.startswith('private') and not line.startswith('public class'):
                    #去除结尾分号
                    declare = declare.rstrip(';')

                    #使用空格分隔字符串,取出最后一个字段,也就是变量名
                    varName = declare.split(' ')[2]

                    #将变量名和注释以冒号分隔存入列表
                    varNameAndCommentList.append(varName + ':' + comment)

            #读取下一行
            line = javaFile.readline()

        #关闭Java文件
        javaFile.close()

        #创建表格,将变量名和注释写入表格
        table = doc.add_table(rows=len(varNameAndCommentList), cols=2)
        row = 0
        for varNameAndComment in varNameAndCommentList:
            varNameAndCommentSpilt = varNameAndComment.split(':')
            table.cell(row, 0).text = varNameAndCommentSpilt[0]
            table.cell(row, 1).text = varNameAndCommentSpilt[1]
            row += 1

        #创建段落,将变量名和注释写入段落
        for varNameAndComment in varNameAndCommentList:
            doc.add_paragraph(varNameAndComment)

#保存word文档       
doc.save('temp.docx')


运行结果如图所示:

明天就用它去完成我的工作吧,实测一下能减少我多少工作量吧XD。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值