如果您的文件不是很大,那麼只需將它們全部讀入內存(如S. Lott所建議的那樣)。這絕對是最簡單的。
但是,您提到的排序規則會創建一個「大規模」文件。如果它太大而不適合內存,那麼可能使用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
unix'sort'命令有什麼問題? – 2010-08-24 18:37:06
什麼也沒有,但我不是在這個項目的Linux。 ; /我正在爲別人做這件事,該文件只是爲了從他們的機器上遷移而來。 – 2010-08-24 18:41:06
記住Python在Linux以外的平臺上存在...''Sort-Object'在PowerShell中可用 – 2010-08-24 18:43:45