当前位置: 首页 > 编程笔记 >

Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法

虞裕
2023-03-14
本文向大家介绍Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法,包括了Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法的使用技巧和注意事项,需要的朋友参考一下

废话不多说,直接上代码吧!

import threading
import os
 
class Find(threading.Thread): #搜索数据的线程类
 def __init__(self,datalist,startIndex,endIndex,searchstr,savefile): #datalist要搜索的内容列表,startIndex列表搜索范围的开始下标,searchstr要搜索的内容
  threading.Thread.__init__(self)
  self.datalist=datalist #要搜索的数据的内存地址
  self.startIndex=startIndex #开始的索引
  self.endIndex=endIndex #结束的索引
  self.seachstr=searchstr #需要搜索的数据
  self.savefile=savefile
 def run(self):
 	self.findlist=[]
 	for i in range(self.startIndex,self.endIndex):
  	line=self.datalist[i].decode("gbk","ignore") #读取一行
  	if line.find(self.seachstr)!=-1:
  		print(self.getName(),line,end="") #搜索数据
  		self.findlist.append(line)
 	global mutex #多线程共享全局变量(全局锁)
 	with mutex: #获取锁(自动释放锁)
 		for line in self.findlist:
 			self.savefile.write(line.encode("gbk"))
  	
 
mutex=threading.Lock() #创建一个锁
savefile=open("c:\\zhaodao.txt","wb") #搜索到的内容写入该文件
 
path = "C:\\data1.txt" #要搜索的文件
file = open(path, "rb")
datalist = file.readlines() # 全部读入内存
lines=len(datalist) #所有的行数
searchstr=input("输入要查询的数据")
N=10 #开启10个线程
threadlist=[] #线程列表
# 97 9 0-1000000 1000000-2000000 2000000-3000000
for i in range(0,N-1): #0,1,2,3,4,5,6,7,8 数据切割
 mythd= Find(datalist,i*(lines//(N-1)) , (i+1)*(lines//(N-1)),searchstr,savefile) # //表示整除
 mythd.start()
 threadlist.append(mythd) #添加到线程列表
 
#97 = 97//10*10=90
mylastthd= Find(datalist,lines//(N-1)*(N-1),lines,searchstr,savefile) #最后的线程搜索剩下的尾数
mylastthd.start()
threadlist.append(mylastthd) #添加到线程列表
 
for thd in threadlist: #遍历线程列表
 thd.join()
print("finish")

以上这篇Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 问题内容: 如何在目录/子目录中搜索PDF文件的内容?我正在寻找一些命令行工具。似乎无法搜索PDF文件。 问题答案: 您的发行版应提供一个名为的实用程序: 要使pdftotext输出到stdout,而不是文件,必须使用“-”。在和选项将在grep的输出把文件名。可选标志不错,它告诉grep使用终端上的颜色进行输出。 (在Ubuntu中,由或提供。) 这种方法,使用和,拥有一个优势,如果你想使用GN

  • 我已经创建了一个歌曲类,其中包括歌曲(标题、艺术家、专辑)的数据成员。我已经有了一个包含不同歌曲的. txt文件,该文件存储在数组列表中。在我的主类中,功能之一是允许用户通过标题、艺术家或专辑搜索歌曲。 我的问题是,当用户输入某些标题时,搜索功能无法找到歌曲。例如,当我搜索歌曲标题“停留”时,它会找到它。但是,当我搜索名为“波西米亚狂想曲”的歌曲时,它找不到存储的歌曲。我知道它是存储的,因为当我显

  • 我有一个Python脚本,它运行查询并将输出打印到文本文件。当我Dockerize它时,不会创建输出文件。Dockerfile如下: <代码>证书。txt是我需要添加输出的文件。这在脚本中引用。如何将其添加到Dockerfile?

  • 问题内容: 我正在使用Python项目(使用2.7)在Excel文件中搜索正在更改的服务器的UNC路径,然后使用新的UNC路径更新单元格。我是python的新手,我能够找到该单元格并使用以下命令进行打印: 但是,我不知道如何用新的字符串更新单元格,并且工作簿似乎处于只读模式。可能是因为ws仅在获取信息。 我在网上找到了很多资源来搜索单元格和打印信息,但是没有找到有关信息后如何更新单元格的资源。关于

  • 本文向大家介绍python实现的用于搜索文件并进行内容替换的类实例,包括了python实现的用于搜索文件并进行内容替换的类实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python实现的用于搜索文件并进行内容替换的类。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python程序设计有所帮助。

  • 我在从Blogger导入图片到Wordpress时遇到了一个问题,不知怎的,我的内联帖子内容图片使用了所有中等大小的尺寸,这些尺寸太小了。 我尝试在Wordpress媒体设置中调整中等大小的尺寸,然后运行“重新生成缩略图”插件,但由于某些原因,我的博客导入帖子中的图像仍然太小(使用旧的中等大小图像尺寸)。 我一直在想办法解决这个问题,我认为最简单的方法就是在帖子内容中搜索并替换任何有尺寸标注的图像