程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

Python自动化:一键查找文件,告别手动翻找!拯救你的“文件堆”

hfteth 2024-12-29 00:55:13 技术文章 12 ℃

你是否曾经为了找一个文件而翻遍了整个电脑,甚至陷入了“明明就存了,怎么也找不到”的困境?今天,我将为大家揭秘一项Python神技——一键查找文件,让你从此告别手动翻找的烦恼!



小李的"文件堆"


我的朋友小李是他们公司的核心设计元老。自公司成立以来,所有的产品设计都出自小李之手,而所有的产品参数也都是他在精心记录。但是,小李有一个小小的“坏习惯”——他并不是一个擅长文件整理的人。

在小李的电脑里,无数的文件直接存放在C盘或者微信的缓存路径中,犹如一座座未开发的“矿山”。每当公司需要回顾某个产品的设计原稿或者查找某个产品的参数时,小李就需要花费大量的时间去手动翻找这些文件。这不仅浪费了他宝贵的时间,也给他的工作带来了不少麻烦。这时就需要能够按照文件名和文件关键词的工具

按照文件名查找,轻松定位目标文件

在浩如烟海的文件中,有时我们只需要根据文件名就能快速定位到目标文件。Windows自带的这个功能有两大问题:一是无法全局搜索,二是搜索速度极慢。

当你知道文件名或文件名模式时,Python的glob模块就能大显身手。通过简单的几行代码,你就能按照文件名模式查找文件,Python的glob模块就能派上大用场。通过简单的几行代码,你就能按照文件名模式查找文件,无论是全局文件还是当前目录还是子目录中的文件,只需要你输入你想要查找的硬盘范围和文件名格式,都能轻松找到。

import glob  


def find_files_by_name(pattern, path='.'):  
    """  
    按照文件名查找文件  


    :param pattern: 文件名模式,例如 "*vft*.pdf,文件名包含vft的pdf文件"  
    :param path: 查找的目录路径,默认为当前目录  
    :return: 匹配到的文件列表  
    """  
    return glob.glob(f'{path}/**/{pattern}', recursive=True)  


# 使用示例  
file_list = find_files_by_name("*vft*.pdf",'E:\\code\\pdf2word\\')  
for file_path in file_list:  
    print(file_path)
    


按照文件内容查找文件


但是,有时我们可能只知道文件内容中的某个关键词或特定格式,这时就需要按照文件内容来查找文件了。Python的os和re模块将助你一臂之力

import os  
import re  
import time




st = time.time()  
# 假设小李要查找包含"import"关键词的文件  
def search_content(key_word,root_dir):


    pattern = re.compile(key_word)  
    matching_files = []  


    for root, dirs, files in os.walk(root_dir):  
        for file in files:  
            file_path = os.path.join(root, file)  
            if file_path.endswith(('.psd', '.ai', '.txt', '.csv',".xlsx",".docx",".py")):  # 假设小李的文件主要是这些类型  
                with open(file_path, 'r', encoding='utf-8', errors='ignore') as f:  
                    content = f.read()  
                    if pattern.search(content):  
                        matching_files.append(file_path)  
    return matching_files


# 输出匹配到的文件路径  
file_paths = search_content(r'import',"E:\\")


for file_path in file_paths:  
    print(file_path)
et = time.time()
u_t = et - st
print(f"一共查找到了{len(file_paths)}个文件")
print(f"用时{u_t}s")


仅需6s就能从370G的硬盘中,查找到了29000多个匹配的文件,效率惊人


一键查找文件,让你的电脑井井有条


通过将以上代码打包成exe文件【方法可以参照我的另一篇文章《人人都能享受办公自动化的便利——三步将Python程序转为软件》】,小李终于能够轻松实现一键查找文件的功能了。他的工作效率大大提高,再也不用为了找一个文件而烦恼了。更重要的是,他的电脑也变得更加井井有条了!

亲爱的朋友们,如果你也和小李一样遇到了文件查找的烦恼,不妨试试这些Python神技吧!希望它们能为你带来帮助。

如果你喜欢这篇文章,请点赞、分享并关注我们的公众号,我们将为你带来更多有趣、实用的技术文章

Python自动化办公46

Python自动化办公 · 目录

上一篇Python自动化办公,告别加班苦海!一键解决工资条发放大难题!下一篇python自动化办公:4秒钟生成399份荣誉证书,效率提升2万倍,解放双手!

Tags:

最近发表
标签列表