网站首页 > java教程 正文
有些工作经验的朋友可能遇到过这种场景,为了一个认证,需要你生成你项目的代码清单。一个项目代码文件没有几百也有上千,如果全是手动复制,非常浪费时间。今天就展示一下怎么用python来自动生成
获取代码清单
要完成这个功能需要用到python的os模块,它用于与操作系统进行交互的核心模块,它提供了许多函数来操作文件和目录,以及执行一些基本的操作系统功能。
import os
path = 'D:\workspace3\demo'
def listFile(path):
for item in os.listdir(path):
full_path = os.path.join(path, item)
if os.path.isfile(full_path) and item.endswith('.java'):
print(full_path)
elif os.path.isdir(full_path):
listFile(full_path)
listFile(path)
执行以上代码后,就可以获得我的一个demo工程中所有代码清单。其中用到主要功能点如下:
l os.listdir(path): 列出目录内容
l os.path.join(path1, path2): 连接路径
l os.path.isfile(path): 检查是否为文件
l os.path.isdir(path): 检查是否为目录
当检查到当前路径是目录是,就递归调用listFile 函数,直到获取所有java文件。
把代码清单填充到excel文件中
首先,我先修改一下上面那个函数,让它把所有代码清单赋值到一个列表中。
def listFile(path):
java_files = []
for item in os.listdir(path):
full_path = os.path.join(path, item)
if os.path.isfile(full_path) and item.endswith('.java'):
# print(full_path)
java_files.append({
'code_path': os.path.dirname(full_path),
'file_name': item
})
elif os.path.isdir(full_path):
# listFile(full_path)
java_files.extend(listFile(full_path))
return java_files
当遍历到一个文件时,就添加一个字典,里面包含code_path和file_name。当遍历到目录时,就扩展这个最终要返回的列表。
然后定义一个清单文件模板,假设是这个样子的:
根据这个模板写一个生成清单的函数:
from openpyxl import load_workbook
from datetime import datetime
……
def generate_new_excel(template_path, java_files, output_dir=None):
# 加载模板文件
wb = load_workbook(template_path)
# 获取第一个工作表(或根据metadata指定的工作表)
sheet = wb.worksheets[0]
# 写入新的Java文件信息
for i, file_info in enumerate(java_files, start=2): # 从第2行开始写入
sheet.cell(row=i, column=1, value=file_info['code_path'])
sheet.cell(row=i, column=2, value=file_info['file_name'])
# 生成带时间戳的新文件名
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
new_filename = f"java_file_list_{timestamp}.xlsx"
# 确定输出路径
if output_dir and os.path.isdir(output_dir):
output_path = os.path.join(output_dir, new_filename)
else:
output_path = new_filename
# 保存新Excel文件
wb.save(output_path)
print(f"已生成新的文件清单: {output_path}")
return output_path
java_files = listFile(path)
generate_new_excel('./execlfiles/list.xlsx',java_files,'./execlfiles')
最后在指定目录下,就生成了一个预期想要的清单。
总结
这篇展示如何利用了python的os模块和openpyxl库,生成了一个指定目录下的代码清单。其实类似的文件清单的话,也可以按这方式生成。
猜你喜欢
- 2025-06-28 Java、Go 和 Python 多线程性能对比
- 2025-06-28 改改Python代码,运行速度还能提6万倍,Science:先别想摩尔定律了
- 2025-06-28 Python Java Go三种语言做Web开发如何选择?
- 2025-06-28 编程思维的跨语言迁移:我的Python入门体验
你 发表评论:
欢迎- 最近发表
-
- class版本不兼容错误原因分析(class更新)
- 甲骨文Oracle公司为Java的最新LTS版本做出改进
- 「版本发布」Minecraft Java开发版 1.19.4-pre1 发布
- java svn版本管理工具(svn软件版本管理)
- 我的世界1.8.10钻石在第几层(我的世界1.7.2钻石在哪层)
- Java开发高手必备:在电脑上轻松切换多个JDK版本
- 2022 年 Java 开发报告:Java 8 八年不到,开发者都在用什么?
- 开发java项目,选择哪个版本的JDK比较合适?
- Java版本选型终极指南:8 vs 17 vs 21特性对决!大龄程序员踩坑总结
- POI Excel导入(poi excel导入附件)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)