实验:磁盘垃圾文件清理器
本实验的新点在于python程序接收命令行参数的方式,我已整理在前面的博文中,虽然没有用到getopt模块,但这真的是一个很重要的模块,请参见:Python 命令行参数sys.argv和getopt
还有就是递归遍历目录树:一般就以下这三步
# os.listdir(path)获取路径下的所有文件名和文件夹名
# os.path.join连接输入的路径名和刚得到的文件名和或文件夹名
# 判断
#os.path.isdir判断如果连接后的路径为一个文件夹名,则递归;否则对得到的文件名进行相应操作
知道了这些,这个实验相当简单:
一、实验目的
熟练运用标准库os和os.path中的函数,理解sys库中argv成员用法,理解python程序接收命令行参数的方式,理解递归遍历目录树的原理。
二、实验内容
编写程序,实现磁盘垃圾文件清理功能。要求程序运行时,通过命令行参数指定要清理的文件夹,然后删除该文件夹及其子文件夹中所有扩展名为tmp、log、obj、txt 以及大小为0 的文件。
三、实验环境
Python 3.6及以上版本
四、实验代码及测试截图
代码:
from os.path import isdir,join,splitext,getsize
from os import remove,listdir
import sys
garbage_extension = ['.tmp', '.log', '.obj', '.txt']
def garbagefile_clean(path):
for parents in listdir(path):
child = join(path,parents)
if isdir(child):
garbagefile_clean(child)
elif splitext(child)[1] in garbage_extension or getsize(child)==0:
remove(child)
print(child, "deleted....")
# garbagefile_clean(r"E:\test")
for path in sys.argv[1:]:
if isdir(path):
garbagefile_clean(path)
测试:
测试之前的目录:
在该py文件下右键打开cmd,
测试之后的目录: