Если ваши файлы не очень большие, просто прочитайте их все в память (как предлагает С. Лотт). Это определенно будет проще всего.
Однако, вы упоминаете, что сортировка создает один "массивный" файл. Если он слишком большой, чтобы поместиться в памяти, возможно, используйте heapq.merge . Это может быть немного сложнее в настройке, но его преимущество заключается в том, что не требуется, чтобы все итерируемые элементы были одновременно помещены в память.
import heapq
import contextlib
class Domain(object):
def __init__(self,domain):
self.domain=domain
@property
def tld(self):
# Put your function for calculating TLD here
return self.domain.split('.',1)[0]
def __lt__(self,other):
return self.tld<=other.tld
def __str__(self):
return self.domain
class DomFile(file):
def next(self):
return Domain(file.next(self).strip())
filenames=('data1.txt','data2.txt')
with contextlib.nested(*(DomFile(filename,'r') for filename in filenames)) as fhs:
for elt in heapq.merge(*fhs):
print(elt)
с data1.txt:
google.com
stackoverflow.com
yahoo.com
и data2.txt:
standards.freedesktop.org
www.imagemagick.org
Выходы:
google.com
stackoverflow.com
standards.freedesktop.org
www.imagemagick.org
yahoo.com