甲方:
小陈啊,给你一个或多个文件后缀名,你来帮我找出这台PC里面所有的文件位置
我:
什么玩意?
废话少说,上代码
#environment: python 3.8.2 + Windows #author: 想学点black技术 #time: 2020年10月21日21:46:20 #work: 扫描磁盘下的所有.doc, .docx, .txt, .ppt, .xsl, .csv, .ppt输出到指定文件 #使用前请先安装psutil库、 pip install psutill # 模块 import os import re import time import psutil #print(os.popen("wmic volume get lable, name").read()) # 获取磁盘、不适用于Windows10 #打开一个管道,它通往 / 接受自命令 cmd。返回值是连接到管道的文件对象,根据 mode 是 'r' (默认)还是 'w' 决定该对象可以读取还是写入。 #全局变量 disks = [] #用来存放磁盘 #search_file = ['.docx', '.doc'] search_file = ['.docx'] #此处用来写入需要查找的文件后缀,例如'.doc', '.docx' #result_file = 'c:/administrator/desktop/abc.txt' result_file = '' #此处写入输出文件的位置 #错误提示 def error_waring(): pass def check(): if not result_file: print('您还没有填入保存结果的文件路径--result_file') print('程序已默认为您选择保存路径,桌面/result.txt') if not search_file: print('您还没有填入需要查找的文件后缀--search_file') quit() # 主函数 ==》 从C盘开始寻找,依次遍历D,E,F if __name__ == '__main__': time_start = time.time() print('程序运行中...') check() # 获取本地磁盘 disk = str(psutil.disk_partitions()) for i in re.finditer('device', disk): strat = i.span()[1]+2 end = i.span()[1] + 4 disks.append(disk[strat:end]) # 默认输出文件为C:\Users\Administrator\Desktop result_file = r'C:\Users\Administrator\Desktop\result.txt' if not result_file else result_file with open(result_file, 'wb+') as f: # 遍历磁盘、找出文件 for disk in disks: for root, dirs, files in os.walk(disk, topdown=True, onerror=error_waring()): for filename in files: filename_extension, extension = os.path.splitext(filename) if extension in search_file: file_path = os.path.join(root, filename) print(file_path) f.write(file_path.encode()) f.write(b'\n') time_end = time.time() print('程序总耗时=', time_end - time_start)成果:
**初级代码、**无线程,进程,效率较低。用户体验感一般。勉强能用。
自动创建文本,存入结果
换行存入文件的绝对路径 在这里插入图片描述