Причин для того, чтобы возникла необходимость прочитать файл огромное множество. Может быть вам понадобилось прочитать текстовый файл, например, log-file, или XML, в целях извлечения данных. Иногда это становится трудной задачей. Не беспокойтесь, Питон не является каверзным в данном вопросе. Существует два способа при помощи которых Питон сможет прочитать файл. Для простоты, мы дадим Питону прочитать текстовые файлы, но не стесняйтесь попробовать прочитать XML самостоятельно.
Открываем файлы
Допустим, у нас есть удивительный файл test.txt, который заполнен каким-то случайным текстом. Теперь, в примере, у нас есть наш код. Также как и вы должны определится с файлом, прежде чем на него щелкнуть, так и Python должен знать, какой файл открыть. Таким образом, мы используем метод open, чтобы сказать Python, что мы от него хотим, а именно открыть его. “r” просто говорит Python, что мы хотим прочитать (“w”, когда мы хотим что-то записать в файл). И, конечно же, мы связываем это с переменной, чтобы мы могли это использовать позже. Тем не менее, мы только открыли файл, и согласитесь, что пока это не так интересно. Давайте попробуем прочитать файл.
Чтение файла
file.read(n) – Данный метод читает n количество знаков из файла, или если n – пусто, то читает полностью весь файл.
file.readline(n) – Данный метод читает полностью весь файл.
Итак, это может показаться небольшой путаницей. Во-первых, мы открываем файл, как и ожидалось. Далее, мы используем read(1), и обратите внимание, что мы предоставили аргумент 1, который просто означает, что мы хотим прочитать следующий символ. Так, Python печатает “Я” для нас, потому что это первый символ в файле test.txt. Что происходит дальше, немного странно. Мы даем задачу Питону прочитать весь файл при помощи read(). Но разве он не включает в себя тот символ, который мы уже прочитали? Так происходит потому, что Питон просто продолжит с того момента, где он был прерван. Так что, если Python уже прочитал «Я», он начнет чтение со следующего символа. Это сделано для того, чтобы вы могли пролистать содержимое файла без необходимости пропуска большого количества данных каждый раз, когда вы хотите перейти к новому символу. Питон ленив, он не хочет возвращаться и перечитывать содержимое.
На этот раз мы были готовы к трюкам Питона. Поскольку мы использовали метод readline() дважды, можно было догадаться заранее, что мы получим только первые две строки. Конечно, мы также знаем, что readline() читает только одну строку в связи с простотой синтаксиса.
Происходит что-то странное… Во-первых, не берите в голову \n. Это всего лишь символ, означающий новую строку. Питон хочет сохранить существующий формат. Мы открываем файл как обычно, и создаем лист. Затем, мы разбиваем файл на линии, используя ключевые слова. Питон довольно сообразителен и понимает, что от него требуется. Потом, мы используем myList.append(line), чтобы добавить каждую линию в наш лист myList. Наконец, мы отправляем на печать и видим, что нам выдал Питон. Он разил каждую линию файла на строку (string), которыми мы впоследствии сможем делать то, что захотим.
Подождите! Не забудьте закрыть файл!
Самое важное мы оставили напоследок, а именно то, что вы должны всегда закрывать файл, используя close() метод. Питон устает ползать среди открытых файлов и читать их, поэтому дайте ему передышку и закройте файл, чтобы прервать связь. Такая практика закрытия файлов довольно полезна: память вам скажет спасибо.