Я читаю из двух файлов (списков даты и времени), называемых A и B. (не обязательно по порядку)
Я бы хотел создать список этих datetime в виде объектов:
class AB(object):
def __init__(self, datetime, a=False, b=False):
self.datetime = datetime
self.a = a
self.b = b
a должно быть установлено в значение true, если дата-время существует в файле A, и b в значение true, если время-дата существует в файле B. (в противном случае - false)
Например:
файл A: 20111225, 20111226
файл B: 20111225, 20111227
Список объектов должен быть:
AB (20111225, a = true, b = true)
AB (20111226, a = true, b = false)
AB (20111227, a = false, b = true)
В настоящее время:
Я читаю файл A, помещаю дату и время в список A:
listObjects = []
fileA = open(A.log, 'rb')
listA = []
for line in fileA:
try:
dt = datetime.strptime(line, "%Y%m%d")
except Exception, e:
continue
else:
listA.append(dt)
Затем чтение файла B, проверка наличия каждого элемента в списке A и добавление в список объектов B-only и A + B:
fileB = open(B.log, 'rb')
for line in fileB:
try:
dt = datetime.strptime(line, "%Y%m%d")
except Exception, e:
continue
else:
if dt in listA:
listA.remove(dt)
listObjects.append(AB(dt, a=True, b=True))
else:
listObjects.append(AB(dt, a=False, b=True))
Затем я перебираю список A, добавляя оставшиеся элементы только для A:
for dt in listA:
listObjects.append(AB(dt, a=True, b=False))
Затем отсортируйте список по дате и времени:
shutdowns.sort(key=lambda x: x.datetime)
Есть ли лучший способ сделать это? Это кажется немного неуклюжим, и с увеличением длины файлов оно будет экспоненциально медленнее.
Я знаю, что вы можете получить пересечение списков, используя set (A) и set (B) - я должен использовать это?