该脚本的功能为:
对某一文件夹启动任意个线程查找文件包含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还没有进一步优化,欢迎大家留言评论,帮助小白改进脚本(✪ω✪)。
网友评论