Чтение файлов в список строк в Python - PullRequest
1 голос
/ 08 июля 2010

Когда вы используете функцию fileName.readlines () в Python, есть ли символ для конца файла, включенного в список?

Например, если файл считывается в список строк и последняя строка - «Конец», будет ли в списке другое место с символом, обозначающим конец файла?

Спасибо.

Ответы [ 3 ]

5 голосов
/ 08 июля 2010

Нет, список содержит один элемент для каждой строки в файле.

Вы можете сделать что-то с каждой строкой в ​​for выглядеть так:

lines = infile.readlines()
for line in lines:
    # Do something with this line
    process(line)

У Python есть более короткий способ сделать это, чтобы избежать одновременного чтения всего файла в память

for line in infile:
    # Do something with this line
    process(line)

Если вы просто хотите последнюю строку файла

lines = infile.readlines()
last_line = lines[-1]

Почему вы думаете, что вам нужен специальный символ в конце?

1 голос
/ 08 июля 2010

Список, возвращаемый .readlines(), как и любой другой список Python, не имеет маркера «end» - например, assumin. вы начинаете с L = myfile.readlines(), вы можете увидеть, сколько элементов L имеет с len(L), получить последний с L[-1], перебрать все элементы один за другим с for item in L: и так далее ... опять же, как и любой другой список.

Если по какой-то особой причине вы хотите, чтобы после последней строки было какое-то специальное значение "часовой", вы можете, например, сделать L.append(''), чтобы добавить именно такой часовой или маркер - пустая строка никогда не будет значение любой другой строки (поскольку каждый элемент представляет собой полную строку, включая завершающий '\n', поэтому он никогда не будет пустой строкой!).

Вы можете использовать другие произвольные маркеры, такие как None, но часто это проще, когда это возможно [[и это, очевидно, возможно в этом случае, как я только что показал]], если часовой является точно таким же введите как любой другой элемент. Это зависит от того, какую обработку вы выполняете, для чего нужен «дозорный» из конца в конец (я не собираюсь догадываться, потому что вы не даете нам никаких указаний, и только относительно редкие проблемы лучше всего решаются таким образом в Python, так или иначе; -), но почти во всех мыслимых случаях использования дозорного * дозорный '' будет в порядке.

0 голосов
/ 08 июля 2010

Он просто возвращает список, содержащий каждую строку - в списке нет элемента «EOF».

...