好久没有写博客了, 前几天经一个朋友推荐说,写博客可以用markdown,今天便来试一试,由于自己用的还不是太熟悉,可能也不知写出来效果怎么样,今天写的这个是实现一个vs2015工程的清理工具,由于是刚学,写出来的代码也只是简单的实现了这个功能,好了,话不多说,直接上源代码,我这个源代码里面我自己写的注释比较多,还请见谅 (先修改了一部分,有机会再精修一下)
清理文件的工具的代码:
1. 先介绍一下概念:目录;如果双击它,还可以打开,就是说里面还有内容,那么它就是目录(一般一个文件夹它就是一个目录)
2. 文件:如果双击它,打不开, 或者说直接运行这个文件, 那么它就是文件
import os
#(os是一个模块,系统提供的,它里面包含了很多类和方法,可以打开文件/目录,删除文件/目录等,有点类似于一些dos命令
d = ['.exe', '.zip', '.tlog', '.lastbuildstate', '.idb', '.pdb', '.pch', '.res', '.ilk', '.sdf', '.ipch']
#可以先暂时不用管d这个列表, 下面会用到
def fun(path):
#这个path是用来接收路径的
l_del = []
#这个列表也可以暂时先不用管,是用来存储删除掉的文件名的,注意这里的文件, 是与目录相对的文件,在上文已经解释过
try:
#遍历当前目录,得到目录下的所有文件和文件夹(这里所说的文件夹其实是上面所说的 目录!)
file = os.listdir(path)
#这里的file是我们自己所起的名字
#遍历文件列表
for f in file:
#如果是目录,就递归调用进入下一层,看其里面是否有目录,如果有,就继续调用(D:\vs2015\pythonday1,它里面还有文件夹.dea,它就是一个目录
if os.path.isdir(os.path.join(path, f)): #os.path.join(path, f)这句话的作用是拼接路径,f指的是.dea这个目录,path指的是D:\vs2015\pythonday1这个目录
#将两者拼接好以后,就变成了D:\vs2015\pythonday1\.idea
#os.path.isdir():判断括号里面是否为一个目录,如果是,就返回true,这里..idea就是一个目录,返回true,执行if中语句
#如果括号里面拼接的结果为D:\vs2015\pythonday1\作业.py,那么就是一个文件,返回false
#上面if旁边的语句如果判断为目录,就执行下面这一句,继续拼接路径
p = os.path.join(path, f)
#递归#调用本函数,判断目录里面的文件以及目录(就是说一个目录里面它也有可能有目录和文件, 调用本函数依次遍历并判断)
fun(p)
else: #如果是个文件,将文件名和文件后缀名提取, 并放到一个列表里面
name = os.path.splitext(f)
#此时name是一个列表,比如,这里将"misc.xml"拆成了'misc'和'.xml'两个字符串,记住,这里是在for f in file:这个循环下的,所以name这个列表里面只有两个元素,这两个元素为字符串,一个为文件名,一个为文件后缀名,使用得到的文件后缀与自定义的垃圾文件后缀(就是d哪个列表里面的元素)比较
for i in d: #这里的i是d这个列表里的后缀(字符串)(依次遍历),比较成功的就删除,就是说如果
if name[1] == i:
#这句话的意思是说,如果name列表里面的后缀这个字符串和d这个列表里面的字符串(它们也都是后缀名)
l_del.append(f) #它们如果相等的话,把要删除的文件保存到列表中
os.remove(os.path.join(path,f)) #直接删除文件
break
except Exception as e:
print('-------------')
print(path)
print(e)
print('-------------') # 打印需要删除的文件名及路径
print('-------------')
print(path)
print(l_del)
print('-------------')
#调用,r表示自然串,串内的转义字符无效 fun(r'D:\\vs2015\pythonday1')