我们在代码开发项目过程中,有的时候不同环境可能大码执行的方式不同,可能在windows下会用idea,eclipse内置的逻辑来运行Java
在Unix环境就要配合命令行指令编译出.class文件再送给JVM进行处理,一种方式是git同步的时候忽略.class文件,要么就是在某一平台运行管理的时候,另外用脚本进行无用文件的删除工作。
例如:
多层目录下会有.class文件,我们需要进行删除。
可以使用 Python 的 os 和 shutil 模块来实现删除目录下所有以 .class 结尾的文件。具体代码如下:
import os
import shutil
def remove_class_files(dir_path):
"""
删除指定目录及其子目录下的所有以 .class 结尾的文件,并输出删除记录。
:param dir_path: 目录路径
"""
count = 0 # 统计删除的文件个数
for root, dirs, files in os.walk(dir_path):
for file in files:
if file.endswith('.class'):
file_path = os.path.join(root, file)
os.remove(file_path) # 删除文件
count += 1
print(f'Deleted file: {file_path}')
print(f'Total deleted files: {count}')
# 测试代码,删除当前目录下所有以 .class 结尾的文件
remove_class_files('.')
该脚本中,os.walk() 方法用于遍历指定目录及其子目录下的所有文件和文件夹。对于每个找到的文件,如果其以 .class 结尾,则使用 os.remove() 方法删除该文件,并统计删除的文件个数及输出删除记录。
需要注意的是,在运行脚本时需谨慎,确保没有误删重要文件,建议先备份数据。
如果需要对过程进行持久化,并对要删除的内容不放心,我们可以将数据放入一个回收站,并以文件的方式输出我们的删除行为。
具体代码如下:
import os
import shutil
def remove_class_files(dir_path):
"""
删除指定目录及其子目录下的所有以 .class 结尾的文件,并输出删除记录。
:param dir_path: 目录路径
"""
count = 0 # 统计删除的文件个数
trash_dir = os.path.join(dir_path, 'trash') # 创建 trash 文件夹
if not os.path.exists(trash_dir):
os.mkdir(trash_dir)
log_file = os.path.join(dir_path, 'deleted_files.log') # 创建日志文件
with open(log_file, 'w') as f:
for root, dirs, files in os.walk(dir_path):
for file in files:
if file.endswith('.class'):
file_path = os.path.join(root, file)
trash_file_path = os.path.join(trash_dir, file) # 构造 trash 文件夹下的文件路径
shutil.move(file_path, trash_file_path) # 移动文件到 trash 文件夹
count += 1
print(f'Deleted file: {file_path}')
f.write(f'Deleted file: {file_path}\n') # 记录删除文件
f.write(f'Total deleted files: {count}') # 记录总共删除的文件数
# 测试代码,删除当前目录下所有以 .class 结尾的文件
remove_class_files('.')
该脚本中,在删除 .class 文件之前,先创建了一个名为 trash 的文件夹,并在代码中使用 shutil.move() 方法将要删除的文件移动到该文件夹下。同时,记录已删除的文件和总共删除的文件数操作也被修改,现在所有的日志信息都会写入 deleted_files.log 文件中。