Python 如何找到单词在文件中的位置?
例如,我有文件和单词“test”。文件部分为二进制文件,但具有字符串“test”。如何在不加载到内存的情况下查找文件中单词(索引)的位置?您可以使用和 内存映射文件对象的行为类似于字符串和文件 物体。但是,与普通字符串对象不同,这些对象是可变的。你 可以在大多数需要字符串的地方使用mmap对象用于 例如,您可以使用re模块搜索映射到的内存 文件。因为它们是可变的,所以您可以通过 执行obj[index]=“a”,或通过分配给切片来更改子字符串: obj[i1:i2]='…'。您还可以从开始读取和写入数据 当前文件位置,并通过文件查找()到不同的 职位 范例Python 如何找到单词在文件中的位置?,python,Python,例如,我有文件和单词“test”。文件部分为二进制文件,但具有字符串“test”。如何在不加载到内存的情况下查找文件中单词(索引)的位置?您可以使用和 内存映射文件对象的行为类似于字符串和文件 物体。但是,与普通字符串对象不同,这些对象是可变的。你 可以在大多数需要字符串的地方使用mmap对象用于 例如,您可以使用re模块搜索映射到的内存 文件。因为它们是可变的,所以您可以通过 执行obj[index]=“a”,或通过分配给切片来更改子字符串: obj[i1:i2]='…'。您还可以从开始读取和
import re
import mmap
f = open('path/filename', 'r+b')
mf = mmap.mmap(f.fileno(), 0)
mf.seek(0) # reset file cursor
m = re.search('pattern', mf)
print m.start(), m.end()
mf.close()
f.close()
试试这个:
with open(file_dmp_path, 'rb') as file:
fsize = bsize = os.path.getsize(file_dmp_path)
word_len = len(SEARCH_WORD)
while True:
p = file.read(bsize).find(SEARCH_WORD)
if p > -1:
pos_dec = file.tell() - (bsize - p)
file.seek(pos_dec + word_len)
bsize = fsize - file.tell()
if file.tell() < fsize:
seek = file.tell() - word_len + 1
file.seek(seek)
else:
break
打开(文件\u dmp\u路径,'rb')作为文件:
fsize=bsize=os.path.getsize(文件\u dmp\u路径)
word\u len=len(搜索词)
尽管如此:
p=file.read(bsize).find(搜索单词)
如果p>-1:
pos_dec=file.tell()-(bsize-p)
file.seek(pos_dec+word_len)
bsize=fsize-file.tell()
如果file.tell()
除非打开文件,否则无法在文件中找到文本的位置。这就像让一个人不睁开眼睛看报纸一样
回答你问题的第一部分,它相对简单
with open('Path/to/file', 'r') as f:
content = f.read()
print content.index('test')
不将文件加载到内存是什么意思?你是说不打开它?我不知道怎么可能。。。你要求计算机告诉你某物在哪里,却看不见它。解释一下“不加载到内存中这个文件”是什么意思,因为如果你的意思是你所说的,你可能不知道计算机是如何工作的。你最后的限制是相当矛盾的。如果你不读,你怎么知道文件里有什么?如果您想避免一次性将大文件全部读入内存,可以尝试缓冲读取,但您仍然必须至少在第一次匹配中读取。如果比赛也跨越了缓冲区的末端,那就要小心了。