Python—多线程文件名称查找

2018-07-24  本文已影响31人  Ackerzy

该脚本的功能为:
对某一文件夹启动任意个线程查找文件包含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

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

上一篇下一篇

猜你喜欢

热点阅读