Как работать с простыми текстовыми файлами в Python 3

Вступление

Python - отличный инструмент для обработки данных. Вполне вероятно, что любая написанная вами программа будет включать чтение, запись или манипулирование данными. По этой причине особенно полезно знать, как обращаться с разными форматами файлов, в которых хранятся разные типы данных.

Например, рассмотрим программу Python, которая проверяетlistпользователей на предмет контроля доступа. Ваш список пользователей, скорее всего, будет сохранен и сохранен в текстовом файле. Возможно, вы не работаете с текстом, а вместо этого имеете программу, которая выполняет финансовый анализ. Для того, чтобы сделать какое-то сокращение чисел, вам, вероятно, придется вводить эти числа из сохраненной электронной таблицы. Независимо от вашего приложения, почти гарантировано, что ввод или вывод данных будут задействованы.

В этом руководстве кратко описываются некоторые типы форматов, которые Python может обрабатывать. После краткого введения в форматы файлов мы рассмотрим, как открывать, читать и писать текстовые файлы в Python 3.

Когда вы закончите с этим учебником, вы сможете обрабатывать любой текстовый файл в Python.

Предпосылки

Для этого урока у вас должен быть установлен Python 3, а также локальная среда программирования, настроенная на вашем компьютере. Если это не так, вы можете выполнить настройку, следуя соответствующим инструкциям по установке и настройке для вашей операционной системы:

Фон

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

Тип файла Описание

txt

В текстовом файле хранятся данные, представляющие только символы (илиstrings), и исключаются любые структурированные метаданные.

CSV

В файле значений, разделенных запятыми, используются запятые (или другие разделители) для структурирования хранимых данных, что позволяет сохранять данные в формате таблицы.

HTML

Файл языка разметки гипертекста хранит структурированные данные и обычно используется на большинстве веб-сайтов.

JSON

Нотация объектов JavaScript - это простой и эффективный формат, что делает его одним из наиболее часто используемых форматов для хранения и передачи данных.

В этом руководстве основное внимание уделяется формату файловtxt.

[[step-1 -—- create-a-text-file]] == Шаг 1. Создание текстового файла

Прежде чем мы начнем работать в Python, мы должны убедиться, что у нас есть файл для работы. Для этого мы откроем текстовый редактор и создадим новый текстовый файл, назовем егоdays.txt.

В новом файле введите несколько строк текста. В этом примере давайте перечислим дни недели:

days.txt

Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

Затем сохраните ваш файл и убедитесь, что вы знаете, куда его поместить. В нашем примере наш пользовательsammy сохранил файл здесь:/users/sammy/days.txt. Это будет очень важно на следующих этапах, когда мы открываем файл в Python.

Теперь, когда у нас есть текстовый файл для обработки, мы можем начать наш код!

[[step-2 -—- open-a-file]] == Шаг 2 - Открытие файла

Прежде чем мы сможем написать нашу программу, мы должны создать программный файл Python, поэтому создайте файлfiles.py в текстовом редакторе. Чтобы упростить задачу, сохраните его в том же каталоге, что и наш файлdays.txt:/users/sammy/.

Чтобы открыть файл в Python, нам сначала нужен способ связать файл на диске сvariable в Python. Этот процесс называетсяopening файлом. Мы начнем с сообщения Python, где находится файл. Расположение вашего файла часто обозначается как файлpath. Чтобы Python открыл ваш файл, ему нужен путь. Путь к нашему файлуdays.txt:/users/sammy/days.txt. В Python мы создадим строковую переменную для хранения этой информации. В нашем сценарииfiles.py мы создадим переменнуюpath и установим для нее путь days.txt.

files.py

path = '/users/sammy/days.txt'

Затем мы воспользуемся функцией Pythonopen(), чтобы открыть наш файлdays.txt. Функцияopen() требует в качестве первого аргумента путь к файлу. Функция также учитывает многие другие параметры. Однако наиболее важным является необязательный параметрmode. Mode - это необязательная строка, которая указывает режим, в котором открывается файл. Выбранный вами режим будет зависеть от того, что вы хотите сделать с файлом. Вот некоторые из наших опций режима:

  • 'r': использовать для чтения

  • 'w': использовать для записи

  • 'x': использовать для создания и записи в новый файл

  • 'a': использовать для добавления в файл

  • 'r+': использовать для чтения и записи в один и тот же файл

В этом примере мы хотим только читать из файла, поэтому мы будем использовать режим'r'. Мы будем использовать функциюopen(), чтобы открыть файлdays.txt и назначить его переменнойdays_file.

files.py

days_file = open(path,'r')

После того, как мы открыли файл, мы можем прочитать его, что мы и сделаем на следующем шаге.

[[шаг-3 -—- чтение-файл]] == Шаг 3 - Чтение файла

Так как наш файл был открыт, теперь мы можем манипулировать им (т.е. читать из него) через переменную, которую мы ему присвоили. Python предоставляет три связанные операции для чтения информации из файла. Мы покажем, как использовать все три операции в качестве примеров, которые вы можете попробовать, чтобы понять, как они работают.

Первая операция<file>.read() возвращает все содержимое файла в виде одной строки.

days_file.read()
Output'Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday\n'

Вторая операция<file>.readline() возвращает следующую строку файла, возвращая текст до следующего символа новой строки включительно. Проще говоря, эта операция будет читать файл построчно.

days_file.readline()
Output'Monday\n'

Поэтому, как только вы прочитаете строку с операцией readline, она перейдет к следующей строке. Таким образом, если вы вызовете эту операцию снова, она вернет следующую строку в файле, как показано.

days_file.readline()
Output'Tuesday\n'

Последняя операция<file>.readlines() возвращает список строк в файле, где каждый элемент списка представляет одну строку.

days_file.readlines()
Output['Monday\n', 'Tuesday\n', 'Wednesday\n', 'Thursday\n', 'Friday\n', 'Saturday\n', 'Sunday\n']

Что следует иметь в виду, когда вы читаете из файлов, после того, как файл был прочитан с помощью одной из операций чтения, он не может быть прочитан снова. Например, если вы сначала запуститеdays_file.read(), а затемdays_file.readlines(), вторая операция вернет пустую строку. Поэтому в любое время, когда вы хотите прочитать файл, вам сначала нужно открыть новую файловую переменную. Теперь, когда мы прочитали из файла, давайте узнаем, как записать в новый файл.

[[step-4 -—- writing-a-file]] == Шаг 4 - Запись файла

На этом этапе мы собираемся написать новый файл, который будет включать заголовокDays of the Week, за которым следуют дни недели. Во-первых, давайте создадим нашу переменнуюtitle.

files.py

title = 'Days of the Week\n'

Нам также необходимо сохранить дни недели в строковой переменной, которую мы назовемdays. Чтобы было легче следовать, мы включили код из вышеперечисленных шагов. Мы открываем файл в режиме чтения, читаем файл и сохраняем возвращенный результат операции чтения в нашей новой переменнойdays.

files.py

path = '/users/sammy/days.txt'
days_file = open(path,'r')
days = days_file.read()

Теперь, когда у нас есть переменные для заголовка и дней недели, мы можем начать запись в наш новый файл. Для начала нам нужно указать местоположение файла. И снова мы будем использовать каталог/users/sammy/. Нам нужно будет указать новый файл, который мы хотим создать. Итак, наш путь на самом деле будет/users/sammy/new_days.txt. Мы предоставляем информацию о нашем местоположении в переменнойnew_path. Затем мы открываем наш новый файл в режиме записи, используя функциюopen() с указанным режимом'w'.

files.py

new_path = '/users/sammy/new_days.txt'
new_days = open(new_path,'w')

Важно отметить, что если new_days.txt уже существовал до открытия файла, его старое содержимое было бы уничтожено, поэтому будьте осторожны при использовании режима'w'.

Как только наш новый файл открыт, мы можем поместить данные в файл, используя операцию записи<file>.write(). Операция записи принимает один параметр, который должен быть строкой, и записывает эту строку в файл. Если вы хотите начать новую строку в файле, вы должны явно указать символ новой строки. Сначала мы записываем заголовок в файл, а затем дни недели. Давайте также добавим в некоторые инструкции для печати то, что мы пишем, что часто является хорошей практикой для отслеживания прогресса ваших сценариев.

files.py

new_days.write(title)
print(title)

new_days.write(days)
print(days)

Наконец, всякий раз, когда мы заканчиваем работу с файлом, мы должны обязательно закрыть его. Мы покажем это на нашем последнем этапе.

[[шаг-5 -—- закрытие-файла]] == Шаг 5. Закрытие файла

Закрытие файла гарантирует, что соединение между файлом на диске и файловой переменной завершено. Закрытие файлов также гарантирует, что другие программы могут получить к ним доступ и сохраняет ваши данные в безопасности. Поэтому всегда закрывайте свои файлы. Теперь закроем все наши файлы с помощью функции<file>.close().

files.py

days_file.close()
new_days.close()

Теперь мы закончили обработку файлов в Python и можем перейти к просмотру нашего кода.

[[step-6 -—- verify-our-code]] == Шаг 6. Проверка нашего кода

Прежде чем запускать наш код, давайте удостоверимся, что все выглядит хорошо. Конечный продукт должен выглядеть примерно так:

files.py

path = '/users/sammy/days.txt'
days_file = open(path,'r')
days = days_file.read()


new_path = '/users/sammy/new_days.txt'
new_days = open(new_path,'w')

title = 'Days of the Week\n'
new_days.write(title)
print(title)

new_days.write(days)
print(days)

days_file.close()
new_days.close()

После сохранения кода откройте терминал и запустите скрипт Python, например:

python files.py

Наш вывод должен выглядеть так:

OutputDays of the Week

Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

Теперь давайте дважды проверим, что наш код полностью работает, открыв новый файл (new_days.txt). Если все прошло хорошо, когда мы открываем наш новый файл, он должен выглядеть так:

new_days.txt

Days of the Week
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

Ваш файл будет выглядеть одинаково или аналогично - вы успешно прошли этот урок!

Заключение

В этом уроке мы рассмотрели, как обрабатывать текстовые файлы в Python 3 и манипулировать ими. Теперь вы можете открывать, читать, писать и закрывать файлы в Python, и вы можете продолжать работать со своими собственными данными в Python.