В общем, сам решил проблему.
Как выяснилось, при работе for c дескриптором файла, он (for) перед тем как пройтись по строкам производит какие-то манипуляции (предположительно, преобразует в список), после которых указатель на текущую позицию в файле оказывается в конце, и работа цикла в дальнейшем происходит с полученным списком, а не с самим дескриптором. Такое же поведение присуще и конструкции
Вот полное решение. В данном примере работа происходит с одним файлом, но это сути не меняет.
Содержимое data.txt:
aaaaa
bbbbb
ccccc
ddddd
eeeee
fffff
ggggg
hhhhh
kkkkk
lllll
mmmmm
nnnnn
ooooo
ppppp
NEWNEWNEW
NEWNEWNEW1
NEWNEWNEW2
NEWNEWNEW3
NEWNEWNEW4
find_string = 'ppppp\n'
with open('data.txt', 'r') as urls:
while 1:
if urls.readline() == find_string:
offset_to_next_string = urls.tell()
break
with open('data.txt','r') as newfile:
newfile.seek(offset_to_next_string,0)
print newfile.readlines()
При первом открытии происходит поиск смещения строки find_string
При втором открытии мы перемещаем указатель на следующую после find_string строку, и выводим данные после find_string.
На выходе получим список
['NEWNEWNEW\n', 'NEWNEWNEW1\n', 'NEWNEWNEW2\n', 'NEWNEWNEW3\n', 'NEWNEWNEW4']
Всем отписавшимся в топе спасибо за отзывчивость.