7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. Python

Как Внести Изменения в Несколько Файлов с Помощью Python

Scroll to top
Read Time: 3 mins

Russian (Pусский) translation by Andrey Rybin (you can also view the original English article)

Давайте предположим, что некто, хорошо знакомый с Британскими правилами правописания, решил завершить свое обучение в США. Его попросили написать работу о Python. Он хорошо разбирается в Python, и написать работу не сложно. Он рассказывает об изображениях в какой-то части своей работы и много раз использовал слово grey (Британское правописание) вместо gray (Американское правописание), а так же neighbourhood (Британское правописание) вместо neighborhood (Американское правописание). Но он теперь в США и следовательно теперь нужно пройтись по все словам, в которых используется Британские правила правописания и заменить их словами на Американский манер.

Это один из возможных сценариев, когда необходимо изменить что-то в правописании или исправить ошибку в нескольких местах.

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

Начнем!

Подготовка Данных

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

Как вы можете видеть, у нас есть папка с именем Abder, в которой находится пять файлов с именами 1, 2, 3, 4, и 5.

Реализация

Перейдем к самой интересной части.  Первое что мы должны сделать, это прочитать содержимое директории  Abder. Для этого мы можем использовать функцию listdir(), следующим образом:

Если мы хотим увидеть, что находится внутри директории, мы можем написать следующую команду:

В этом случае мы получим:

Что говорит нам о том, что у нас есть пять rtf файлов внутри директории.

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

Следующее, что нам нужно сделать, это цикл по всем файлам в директории Abder. Мы можем использовать цикл for-loop следующим образом:

Так как мы хотим просмотреть каждый из пяти файлов в директории и найти Adber,  правильным на данном этапе, будет отрыть и считать содержимое каждого файла:

Теперь мы подходим к очень важному шагу, особенно когда речь идет о поиске соответствия шаблону, в нашем случае, поиске Adber. Это использование regular expressin (регулярных выражений). В Python, для того чтобы использовать регулярные выражения, мы будем применять re модуль.

Мы будем использовать две основные функции из этого модуля. Первая - это compile():

Компилирует шаблон регулярного выражения в объект , который может использоваться для сопоставления с использованием функций match() и search().

И вторая - это sub(), для замены слов с ошибочным правописанием на правильные. Таким образом, мы делаем следующее:

В конце, мы запишем новый текст в файл, после того как была сделана подстановка:

Собираем Все Вместе

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

Как мы видим, Python позволяет очень легко произвести изменения в нескольких файлах, используя цикл for-loop. Другой важный момент, который следует извлечь из этого урока это использование регулярных выражений для поиска совпадений.

Если вы хотите знать больше о циклах в Python, посмотрите урок A Smooth Refresher on Python's Loop. И для того, что бы больше узнать о регулярных выражениях, посмотрите Regular Expressions in Python.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.