软著统计行数代码见我上一篇。
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:UsersMDesktop1myproruoyi-adminsrcmainjavacomruoyiwebcontrollerdemocontrollerDemoDialogController.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)