Skip to main content
 首页 » 编程设计

python之如何在文件中查找子字符串

2025年05月04日19落叶无声

如何仅使用 read(1) 在二进制文件中查找字符串? 例如,我想在文件中找到字符串“abst”的位置(不加载到内存中)? 它的工作,但非常原始:

#!/usr/bin/python2 
f = open("/tmp/rr", "rb") 
f.seek(0) 
 
cont = 1 
while(cont): 
    a1 = f.read(1) 
    if a1 == 'a': 
        a2 = f.read(1) 
        if a2 == 'b': 
            a3 = f.read(1) 
            if a3 == 's': 
                a4 = f.read(1) 
                if a4 == 't': 
                    found = True 
                    cont = 0 
 

请您参考如下方法:

使用mmap搜索具有恒定内存要求的文件:

import mmap 
with open('/tmp/rr', 'rb') as f: 
  m = mmap.mmap(f.fileno(), 0, mmap.MAP_PRIVATE, mmap.PROT_READ) 
  position = m.index('abst')