一、实验目的
熟练运用标准库os和os.path中的函数,理解sys库中argv成员用法,理解python程序接收命令行参数的方式,理解递归遍历目录树的原理。
编写程序,实现磁盘垃圾文件清理功能。要求程序运行时,通过命令行参数指定要清理的文件夹,然后删除该文件夹及其子文件夹中所有扩展名为tmp、log、obj、txt 以及大小为0 的文件。
二、实验环境
Python3.8
三、实验基本原理及步骤
1. 查看帮助手册,了解os.path模块中的isdir,join,splitext,getsize方法,以及os库中的remove,listdir方法。
连接两个路径
如果路径名引用现有目录,则返回true
从文件名中分割出扩展名
返回文件的大小
删除一个文件
返回包含目录中文件名称的列表
**sys.argv()**函数
获取运行python文件的时候命令行参数
更详细易懂的描述在:
/csdn15698845876/article/details/74909089
2. 编写一个函数,该函数带有一个参数为指定的文件夹。函数删除该文件夹及其子文件夹中所有指定的文件类型。
3. 程序示例输出如下:
运行程序之前:
运行程序之后:
四、实验数据记录(或仿真及软件设计)
程序及运行结果:
# -*- coding: utf-8 -*-"""Created on Sun May 31 17:00:08 @author: natur"""#检查路径是否为文件,不是就检查文档下的文件是否为文档,重复循环#编写一个函数,该函数带有一个参数为指定的文件夹。函数删除该文件夹及其子文件夹中所有#指定的文件类型。from os.path import isdir,join,splitext,getsizefrom os import remove,listdirimport sysdef Delete(path):if isdir(path)== True:for item in listdir(path):item = join(path,item)if isdir(item) == False:if splitext(item)[1] in extension or getsize(item) == 0:remove(item)print(item,"deleted")else:Delete(item)extension = ['.tmp', '.log', '.obj', '.txt']path = sys.argv[1]Delete(path)
思路:
利用os.path.isdir()函数路径是否为文档,再利用os.listdir()得到路径下的文件列表,是就循环检查文档下的文件列表中是否又有文档,如果是则迭代创建的函数;如果不是,则为文件,利用os.path.splitext()函数分割出扩展名,判断它的扩展名是否在我们的需求内,或者利用os.path.getsize()函数得到文件大小,判断是否为0,如果两个条件满足一个,则利用os.remove()删除该文件,并将其路径利用os.path.join()函数将文件路径以及文件结合进行输出。文件路径的得知主要依靠sys.argv()[1]函数,通过命令行得到
如果觉得《磁盘垃圾文件清理器》对你有帮助,请点赞、收藏,并留下你的观点哦!