python3 根据文件后缀名遍历所有磁盘找出文件位置
故事开始
甲方:
小陈啊,给你一个或多个文件后缀名,你来帮我找出这台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, 'rb+') 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)
总结问题
成果:
**初级代码、**无线程,进程,效率较低。用户体验感一般。勉强能用。
自动创建文本,存入结果
换行存入文件的绝对路径
在这里插入图片描述