软著统计行数代码见我上一篇。

Java Web项目一弄就是4万行,这还只是java文件,没有包含html,js,xml那些,可见废话有多少。

改改顶部的几个参数,直接运行,会生成个output.txt,然后把内容粘贴到word里面,设置下行距,固定值12磅,刚好满足每页至少50行的要求。

然后4000行代码肯定会超过60页,然后从中间删除几个类即可。

成品 output.txt 格式类似如下,就是多了个带包路径的java文件名,和最后的空行。

com.ruoyi.web.controller.common.CommonController.java
package com.ruoyi.web.controller.common;
import javax.servlet.http.HttpServletRequest;

@Controller
public class CommonController
{
....
}

com.xxx.yyy.zzz.Hello.java
package com.xxx.yyy.zzz;
import xxxxx;

.....

Python脚本如下:

用到了with语法和切片,讲到这,推荐大家看下python的中阶书《流畅的Python》,挺好的书,但不适合初学者,适合Java转Python的程序员。

# 适用于python 3.7 

import os

# C:\Users\M\Desktop\1\mypro\ruoyi-admin\src\main\java\com\ruoyi\web\controller\demo\controller\DemoDialogController.java

projectDir='C:\\Users\\M\\Desktop\\1\\whjcwzh'  #项目文件夹
baseDir='C:\\Users\\M\\Desktop\\1\\whjcwzh\\ruoyi-admin\\src\\main\\java\\' #需要扣掉,只打印包路径
typeList = ['java']     #统计的源代码文件格式
fileCode = 'utf-8'        #源代码文件的编码格式
output = 'C:\\Users\\M\\Desktop\\1\\mypro\\output.txt'
printLines =4000        #每页不少于50行,前、后各连续30页,共60页。4000行中间后面删一点就够了。
 

def getFileList(projectDir):
    fileList = []
    for parent,dirNames,fileNames in os.walk(projectDir):
        for filename in fileNames:
            ext = filename.split('.')[-1]
            if ext in typeList:
                fileList.append(os.path.join(parent,filename))
    return fileList
 
def writeTxt(infileName, fileCode, output):
    count = 0
    with open(output,'at',encoding="utf-8") as fout:
        
        #写文件名,要包括包名 com.mypro.web.controller.demo.Hello.java
        filepkg = infileName[len(baseDir):].replace('\\','.') + "\n"
        fout.write(filepkg)

        #写代码正文
        for line in open(infileName,'r',encoding=fileCode).readlines():
            if line != '' and line != '\n':       #过滤空行
                count += 1
                fout.write(line)
                
        #文件打印结束,空出一行
        fout.write("\n")

    print (infileName + '--write line num--' , count)
    return count
 
if __name__ == '__main__' :
    fileList = getFileList(projectDir)
    totalCnt = 0
    for sourcefile in fileList:
        totalCnt = totalCnt + writeTxt(sourcefile, fileCode, output)
        if(totalCnt > 4000):
            print("最后一个文件是:", sourcefile)
            break
    print ('总行数',totalCnt)

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐