python3遍历磁盘找出每个磁盘下对应的文件

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)

总结问题

成果:

**初级代码、**无线程,进程,效率较低。用户体验感一般。勉强能用。

自动创建文本,存入结果

在这里插入图片描述

换行存入文件的绝对路径
在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值