一、实验目的
【资料图】
熟练运用标准库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文件的时候命令行参数 更详细易懂的描述在:
2. 编写一个函数,该函数带有一个参数为指定的文件夹。函数删除该文件夹及其子文件夹中所有指定的文件类型。
3. 程序示例输出如下:
运行程序之前:
运行程序之后:
四、实验数据记录(或仿真及软件设计)
程序及运行结果:
# -*- coding: utf-8 -*-"""Created on Sun May 31 17:00:08 2020@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]函数,通过命令行得到