美文网首页
Python—多线程文件名称查找

Python—多线程文件名称查找

作者: Ackerzy | 来源:发表于2018-07-24 00:03 被阅读31次

    该脚本的功能为:
    对某一文件夹启动任意个线程查找文件包含XXX字符的文件名,并显示该文件所在的路径

    # Python 3.6.1
    import os
    import time
    from queue import Queue
    from threading import Thread
    
    queue = Queue()
    
    # 搜索一个路径下的所有文件名
    def mylistdir(path):
        files = os.listdir(path)
        for file in files:
            pfile = path + "/" + file
            if os.path.isdir(pfile):
                mylistdir(pfile)
            if os.path.isfile(pfile):
                s.append(pfile)
        return s
    
    # 线程搜索
    class SearchThread(Thread):
        def __init__(self, queue):
            Thread.__init__(self)
            self.queue = queue
        def run(self):
            global key
            while True:
                files = self.queue.get()
                if key in files:
                    file_result.append(files)
                self.queue.task_done()
    
    # 一些配置信息
    s = []
    file_result = []
    path = input('请输入目录(示例:C:/Users/Amber/Desktop/Python):')
    key = input('请输入关键字:')
    threads = int(input('请输入线程数:'))
    start = time.time()
    mylistdir(path)
    
    # 生成10个线程
    for i in range(threads):
        t = SearchThread(queue)
        t.start()
    
    # 向队列中填充数据
    for file in s:
        queue.put(file)
    
    queue.join()
    
    # 将结果写入文件
    with open('C:/Users/Amber/Desktop/test.txt', 'w', encoding='utf-8') as f:
        for i in file_result:
            f.write(i)
            f.write('\n')
    print("花费时间: %s" % (time.time() - start))
    

    运行结果:

    1.PNG 2.PNG

    还没有进一步优化,欢迎大家留言评论,帮助小白改进脚本(✪ω✪)。

    相关文章

      网友评论

          本文标题:Python—多线程文件名称查找

          本文链接:https://www.haomeiwen.com/subject/yovsmftx.html