Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Python
Code

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

by
Difficulty:BeginnerLength:ShortLanguages:

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
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.