Автор оригинала: Shubham Sayon.
Резюме: Вы можете изменить текстовый файл в Python, используя один из следующих способов:
- Используя
Ищите ()
Метод - Используя
FileInput
Модуль - Используя
Сплитлины ()
Метод - Используя
Regex
модуль иСплит ()
иВставить ()
методы
👀 Обзор
Проблема : Учитывая текстовый файл; Как изменить это в Python?
Сценарий 1: вставьте новую строку в файл
Подумайте, что у вас есть следующий текстовый файл, который перечисляет определенные веб-сайты, и вы хотите вставить другой веб-сайт (строку) в новую строку в файл.
Данный файл:
Вы собираетесь вставить, “Freelancer.com” В списке приведен в указанном выше файле без удаления файла.
Сценарий 2: вставьте новое предложение в той же линии
В предыдущем примере вы хотели вставить строку в новую строку, что, если вы хотите вставить новую строку на определенном месте в абзаце независимо от строк. Например, у вас есть файл со следующими предложениями, как показано ниже:
Peter Piper picked a peck of pickled peppers.A peck of pickled peppers Peter Piper picked.Wheres the peck of pickled peppers Peter Piper picked.
Вы хотите вставить новое предложение (например, – Если Питер Пайпер выбрал клевение маринованных перцев ) после второго предложения. Итак, желаемый выход:
Peter Piper picked a peck of pickled peppers.A peck of pickled peppers Peter Piper picked.If Peter Piper picked a peck of pickled peppers.Wheres the peck of pickled peppers Peter Piper picked.
Итак, как вы собираетесь выполнить вышеуказанные задачи? 🤔
📝 Прежде чем мы продолжим дальше, пожалуйста Примечание что:
Вы не можете вставить строку в середину файла, не повторяя его. Вы можете добавить в файл или перезаписать часть этого, используя метод Seek (), который мы будем нырять через некоторое время; Но если вы хотите добавить что-то в начале или в середине файла, вам придется переписать его. Так просто! 😛 Это полностью операционная система и не имеет ничего общего с Python. Это так на всех языках.
Поэтому лучшая практика:
- читать из файла,
- сделать необходимые модификации,
- Запишите это в новый файл (например, ‘ my_file.txt.tmp’) Отказ Это намного лучше, чем читать весь файл в память, особенно если файл большой.
- Как только временный файл завершен, переименовать его к тому же названию, что и исходный файл.
Это эффективный и безопасный способ сделать это, потому что, если по какой-либо причине файл пишут сбой или прерывается, у вас все еще есть ваш нетронутый исходный файл.
Теперь, когда у нас есть четкое понимание проблемы и правильный подход к модификации, давайте погрузимся в решения и узнаем, как мы можем реализовать нашу концепцию в Python!
Решения для сценария 1 👇
❒ Метод 1: Использование поиска () Метод
⁕ Определение и использование ищет () Метод
Ищите ()
Это метод файлов Python, который позволяет установить текущую позицию файла в потоке файлов. Это также возвращает новую позицию.
Синтаксис:
Давайте использовать Ищите ()
Метод изменять наш файл.
⁕ Решение
Случай 1: добавление к середина файла.
with open('test.txt', 'r+') as f: file = f.readlines() for line in file: if 'Upwork' in line: pos = line.index('Upwork') file.insert(pos + 1, 'Freelancer.com\n') f.seek(0) f.writelines(file) f.close()
Выход:
Случай 2: Подготовка к Конец файл
Если вы просто хотите добавить в файл, то все, что вам нужно сделать, это открыть файл в Добавить Режим и вставьте необходимую строку.
with open('test.txt', 'a') as f: f.write('\nFreelancer.com')
Выход:
Случай 3: Подготовка к Начало файла
with open('test.txt', 'r+') as f: file = f.readlines() file.insert(0,'Freelancer.com\n') f.seek(0) f.writelines(file)
Выход
❒ Метод 2: Использование модуля FileInput
Другой обходной путь для изменения файла в том, что вы можете использовать FileInput
Модуль стандартной библиотеки Python, которая позволяет переписать файл, установив в помещении
Ключевой способ ключевых слов как Inplace = True
Отказ
import fileinput f = fileinput.input('test.txt', inplace=true) for n, line in enumerate(f, start=1): if line.strip() == 'Finxter': print('Freelancer.com') print(line, end='')
Выход:
❒ Метод 3: Использование сплитлей () Метод
❖ Сплитлины ()
Это метод в Python, который используется для разбивки струны, разбивающейся на границах линии. Он возвращает список линий, разбивающихся на границах линии.
with open('test.txt', 'r+') as infile: data = infile.read() # Read the contents of the file into memory. # Return a list of the lines, breaking at line boundaries. li = data.splitlines() index = li.index('Upwork')+1 li.insert(index,'Freelancer.com') infile.seek(0) for item in li: infile.writelines(item+'\n')
Выход :
Решение сценария 2
Теперь давайте посмотрим на решение нашего второго сценария, в котором мы будем вставлять новое предложение, независимо от номера строки. Простое решение этой проблемы состоит в том, чтобы разделить предложения с полной остановкой в качестве сепаратора, а также хранить сепаратор вместе с текстами. Затем вы можете вставить дополнительное предложение в необходимое пространство и, наконец, напишите его в файл.
import re f = open("demo.txt", "r+") contents = f.read() text = re.split('([.])', contents) text.insert(4, 'If Peter Piper picked a peck of pickled peppers.') f.seek(0) f.writelines(text) f.close()
Выход:
Peter Piper picked a peck of pickled peppers.A peck of pickled peppers Peter Piper picked.If Peter Piper picked a peck of pickled peppers.Wheres the peck of pickled peppers Peter Piper picked.
👉 Возможно, вы захотите взглянуть на другой сценарий, описанный в следующем посте:
Как искать и заменить строку в файл в Python?
Заключение
В этой статье мы обсуждали, как изменить файл в Python с помощью пары сценариев. Мы использовали следующие способы достижения нашего окончательного решения:
- Использование метода ищет ()
- Использование модуля FileInput
- Используя сплитлины () Метод
- Использование модуля Regex и методам разделения () и вставки ()
С этим мы приходим к концу этой статьи, и я надеюсь, что вы можете с легкостью изменять файлы в Python после прочтения этой статьи! Пожалуйста, Оставайтесь настроиться и Подписаться Для более интересных статей и обсуждений.
Я профессиональный Python Blogger и Content Creator. Я опубликовал многочисленные статьи и создал курсы в течение определенного периода времени. В настоящее время я работаю полный рабочий день, и у меня есть опыт в областях, таких как Python, AWS, DevOps и Networking.
Вы можете связаться со мной @:
Оригинал: “https://blog.finxter.com/how-to-modify-a-text-file-in-python/”