Как сохранить номер строки при использовании Bag.read_text для чтения нескольких файлов?Python

Программы на Python
Anonymous
Как сохранить номер строки при использовании Bag.read_text для чтения нескольких файлов?

Сообщение Anonymous »

Я хочу прочитать несколько файлов .txt с помощью Bag.read_text и записать путь к файлу и номер строки каждой строки для дальнейшей обработки.
Функция read_text() имеет аргумент include_path=True, который может сохранить путь, но как мне получить номер строки? Будет ли read_text() сохранять порядок строк после чтения файлов?

Код: Выделить всё

def add_line_number(element):
line, path = element

# how to get the line number?
line_index = ...
return line, path, line_index

b = db.read_text([file1, file2, ...], blocksize='10 MiB', include_path)
b = b.map(add_line_number).compute()
# expect b to be: [('line 1', 'file path', ith line in that file), ...]
Edit2
Спасибо за вашу помощь. Вот еще вопросы.
Гарантирует ли read_text() сохранение порядка строк в каждом разделе при назначении files_per_partition=1?
В исходном коде файл читается построчно

Код: Выделить всё

with OpenFile as f:
for line in f:
yield line or (line, path)
Повлияет ли распараллеливание на его последовательность или это задание будет выполняться только одним работником?

Вернуться в «Python»