Maybe use itertools.groupby :
import itertools
def bobo(x):
if x.startswith('BOBO:'):
bobo.count+=1
return bobo.count
bobo.count=0
with open('a') as f:
for key,grp in itertools.groupby(f,bobo):
print(key,list(grp))
gives:
(1, ['BOBO:12341234123412341234\n', '1234123412341234123412341\n', '123412341234\n'])
(2, ['BOBO:12349087609812340-98\n', '43690871234509875\n', '45\n', '\n'])
(3, ['BOBO:32498714235908713248\n', '0987235\n'])
, , . cStringIO:
import cStringIO
with open('a') as f:
file_handles=[]
for key,grp in itertools.groupby(f,bobo):
file_handles.append(cStringIO.StringIO(''.join(grp)))
file_handles , "BOBO:".