У меня есть список отсортированных файлов, в которых данные разделяются «\ n». Я хочу объединить их вместе, чтобы получить один отсортированный файл. Я не хочу загружать содержимое всех файлов одновременно. Я использую слияния функции библиотеки heapqФункция heapq.merge() для списка отсортированных файлов
Я написал следующий код
def merge(*flist):
for element in heapq.merge(*flist):
yield element
где * п-списка является кортеж, как это -
(<open file '/tmp/000000', mode 'w+b' at 0xb73eba70>,
<open file '/tmp/000001', mode 'w+b' at 0xb73ebac8>,
<open file '/tmp/000002', mode 'w+b' at 0xb73ebb20>,
<open file '/tmp/000003', mode 'w+b' at 0xb73ebb78>,
<open file '/tmp/000004', mode 'w+b' at 0xb73ebc80>)
когда я напечатанный элемент выше в цикле Я получаю значение '2 \ n', '44 \ n '. Выходной файл также не находится в отсортированном порядке. Я думаю, проблема связана с новыми символами линии. Как решить эту проблему.
Я пытаюсь исправить это с довольно долгое время, но может не в состоянии разрешить его
Являются ли данные в ваших входных файлах численно отсортированными? – iruvar
Ожидаете ли вы сортировку по ascii-лексикографическому порядку или порядку? Вам может потребоваться преобразовать ваши входные элементы в целые числа. – user2357112
Пожалуйста, разместите несколько примеров данных и ожидаемых результатов. –