Как изменить txt файл через python
Перейти к содержимому

Как изменить txt файл через python

  • автор:

Редактируйте текстовые файлы с помощью Python через REST API редактора

Редактировать текстовый файл с помощью Python через REST API редактора

Многим разработчикам и компаниям часто приходится редактировать текстовые файлы (TXT). Python предоставляет множество инструментов и модулей для управления текстовыми файлами, поскольку это гибкий и мощный язык программирования. В этой статье мы рассмотрим, как редактировать текстовые файлы с помощью Python через REST API редактора. С помощью этого облачного сервиса изменение текстовых файлов становится проще, эффективнее и практичнее.

Что такое REST API редактора?#

GroupDocs.Editor Cloud — это мощный редактор REST API, который позволяет разработчикам программно редактировать и манипулировать HTML, документами Word, электронными таблицами Excel и другими форматами файлов. Он предлагает широкий спектр функций, включая преобразование, форматирование и редактирование документов. С помощью облачного SDK GroupDocs.Editor для Python вы можете легко интегрировать этот API в свои приложения Python, что упрощает работу.

Начало работы с облачным SDK GroupDocs.Editor для Python#

Давайте настроим нашу среду перед редактированием текста файла.

Зарегистрироваться:#

Если вы еще этого не сделали, зарегистрируйте учетную запись GroupDocs, чтобы получить учетные данные API.

Установка Python SDK:#

Установите Cloud SDK GroupDocs.Editor для Python с помощью pip:

pip install groupdocs_editor_cloud 

Инициализируем SDK:#

Затем откройте свой Идентификатор клиента и Секрет клиента на панели мониторинга и интегрируйте предоставленный код, как показано ниже:

Редактирование содержимого текстового файла:#

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

  1. Импортируйте библиотеку groupdocs_editor_cloud.
  2. Замените AppKey и AppSID своими фактическими учетными данными на панели управления GroupDocs.
  3. Создайте экземпляры EditApi и FileApi, используя свои учетные данные.
  4. Определите fileInfo с путем к документу.
  5. Загрузите документ в редактируемое состояние, используя TextLoadOptions.
  6. Загрузите HTML-представление.
  7. Отредактируйте текст файла.
  8. Обновите HTML-файл.
  9. Загрузите отредактированный HTML-файл.
  10. Сохраните отредактированное содержимое HTML в текстовый файл.

Вот пример кода, который показывает, как редактировать текстовые файлы с помощью Python через REST API.

Часто задаваемые вопросы#

Могу ли я редактировать документы других форматов, кроме текстовых файлов?#

Да, GroupDocs.Editor Cloud поддерживает широкий спектр форматов документов, включая DOCX, XLSX, PPTX и другие.

Есть ли ограничения на размер файлов, которые можно редактировать?#

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

Могу ли я использовать GroupDocs.Editor Cloud для совместного редактирования?#

GroupDocs.Editor Cloud в первую очередь предназначен для программного редактирования документов. Функции совместного редактирования могут потребовать дополнительной интеграции с инструментами совместной работы в реальном времени.

Как я могу бесплатно редактировать текстовый файл онлайн?#

Вы можете бесплатно редактировать текстовый файл онлайн, используя наш бесплатный онлайн-редактор текстовых файлов, который использует REST API редактора.

Где я могу задать вопросы или решить проблемы, связанные с REST API редактора текстовых файлов?#

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

Смотрите также#

Ниже вы найдете несколько статей по теме, которые могут оказаться полезными:

  • Редактирование таблицы Excel с использованием REST API в Python
  • Редактирование документов Word с использованием REST API в Python
  • Редактирование презентаций PowerPoint с помощью Python
  • GroupDocs.Editor Cloud Product Family
  • Edit Text file with Python
  • Text Editor REST API
  • Use Python to Change Text
  • Editing REST API with Python SDK

Как заменить строчку в .txt файле через python 3?

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

Отслеживать
52.4k 11 11 золотых знаков 110 110 серебряных знаков 312 312 бронзовых знаков
задан 15 апр 2017 в 18:28
131 1 1 золотой знак 1 1 серебряный знак 2 2 бронзовых знака
Связанные вопросы: Замена файле слов, Python Заменить слово в файле
15 апр 2017 в 19:50
15 апр 2017 в 21:08
Если вам дан исчерпывающий ответ, отметьте его как верный (галка напротив выбранного ответа).
17 апр 2017 в 5:47

4 ответа 4

Сортировка: Сброс на вариант по умолчанию

Замену можно сделать так:

with open ('test.txt', 'r') as f: old_data = f.read() new_data = old_data.replace('что_меняем', 'на_что_меняем') with open ('test.txt', 'w') as f: f.write(new_data) 

Отслеживать
ответ дан 15 апр 2017 в 19:54
590 2 2 серебряных знака 12 12 бронзовых знаков
Спасибо большое, то что нужно )
15 апр 2017 в 20:18
path = pathlib.Path(‘test.txt’); path.write_text(path.read_text().replace(‘old’, ‘new’))
19 мар 2018 в 8:42

Открыть файл на чтение можно либо так

file = open('filename.txt', 'r') firstline = file.readlines()[0].strip() file.close() 
with open('filename.txt', 'r') as f: print('first line', f.readlines()[0].strip()) 

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

Перезаписать файл можно же таким образом:

with open('filename.txt', 'r') as f1, open('filename1.txt', 'w') as f2: f2.write(f1.read()) 

Но так как вы хотите писать файл с заменой строки, то вам нужно воспользоваться перебором по readlines() и либо регулярными выражениями, либо сравнением текущей строки с той, которую вы ищите (если у вас есть искомая строка, конечно) и её заменой.

Грубо говоря, вы можете сделать это как-то так:

with open('filename.txt', 'r') as f1, open('filename1.txt', 'w') as f2: lines = f1.readlines() for line in lines: line = line.strip() if line == 'искомая строка': f2.write('новая строка\n') else: f2.write(line) 

Также могут помочь функции startswith() и endswith() , если у вас есть только начало или конец от искомой строки. И помните про регистр!

Также можно не перебирать строки, а обратиться к строке по индексу, если вам известно какой у неё номер, и заменить её содержание.

И можно воспользоваться функцией replace() , как уже написал автор второго ответа, что сократит количество кода, но заменит абсолютно все вхождения. Чтобы этого избежать, при вызове функции можно указать максимальное число совершаемых замен: S.max(sub_in_str, to_change_str, max) .

Также учитывайте, что replace() совершит замену даже если строка частично совпадает. То есть выполнив это:

'This is a simple example'.replace('is', 'was') 

Мы получим Thwas was a simple example

Отслеживать
ответ дан 15 апр 2017 в 19:44
user243273 user243273

Если длина новой строки не совпадает с длиной старой, то придётся переписать весь файл (начиная со строчки, которую вы хотите заменить) даже если вам надо заменить только одну строку в файле (за редкими исключениями). Связанный вопрос: Запись текстовой строки по нужному индексу в файл на языке Си?

Чтобы в случае ошибки сохранить оригинал или для больших файлов (когда всё содержимое в памяти не помещается), может использоваться временный файл куда новое содержимое пишется и в конце в случае успеха он переименовывается в исходное имя файла. Похожий подход использует стандартный модуль fileinput : исходный файл переименовывается (чтобы из него читать текущее содержимое), а стандартный вывод перенаправляется в указанный файл (простой print печатает прямо в файл):

#!/usr/bin/env python3 import fileinput import os with fileinput.FileInput('файл.txt', inplace=True, backup='.bak') as file: for line in file: line = line.rstrip() # remove trailing (invisible) space print('новое' if line == 'старое' else line) # stdout is redirected to the file os.unlink(filename + '.bak') # remove the backup on success 

Можно самостоятельно явно временный файл создать:

#!/usr/bin/env python3 from pathlib import Path from tempfile import NamedTemporaryFile path = Path('файл.txt') with path.open() as file, \ NamedTemporaryFile('w', dir=str(path.parent), delete=False) as output_file: for line in file: line = line.rstrip() print('новое' if line == 'старое' else line, file=output_file) Path(output_file.name).replace(path) # replace the input file on success 

Отличие в том, что оригинальное содержимое хранится в .bak файле в fileinput подходе, а в коде с NamedTemporaryFile исходный файл заменяется только в случае успеха (в отсутствие исключений).

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

#!/usr/bin/env python3 filename = 'файл.txt' with open(filename) as file: lines = ['новое\n' if line.rstrip() == 'старое' else line for line in file] with open(filename, 'w') as file: file.writelines(lines) 

Подробнее представленные подходы можно по ссылкам в похожем ответе посмотреть.

Если длина новой строки совпадает с длиной старой (в байтах), то можно прямо по месту изменения делать, не переписывая другие части файла, к примеру, используя mmap модуль, который позволяет файл рассматривать и как файл ( .readline() , etc), и как байтовую строку ( .find() , можно применять регулярные выражения). Связанный вопрос: Python — How can I change bytes in a file.

Работа с txt в python. Как работать с редактированием строк?

Доброго времени суток! Не получается написать программу. Есть файл txt в котором очень много строк, в каждой строке мне нужны первые 9 символов до ; и все это составить в другой отдельный txt файл. Помогите, пожалуйста.

  • Вопрос задан 24 мар.
  • 143 просмотра

2 комментария

Простой 2 комментария

leahch

Код в студию! Будем посмотреть, что не так.

2ord

Это задание?
Решения вопроса 0
Ответы на вопрос 3

Используй утилиту cut, она идеально подходит для решения твоей задачи
cut —delimiter=; —fields=1 input_file.csv
Результат будет выведен в консоль, можно перенаправить в фай, добавив в конец строки
> out_file.txt

Ответ написан 25 мар.
Комментировать
Нравится 1 Комментировать

Python хоть и довольно не плохо работает со строками, но что бы редактировать файл нужно прочитать его полностью, а читать по 300кк строк как вариант такое себе, обходной путь — воспользоваться sed в UNIX, или другими встроенными инструментами.
Через os или subprocess.

Ответ написан 25 мар.

Vindicar

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

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

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

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

Что такое файл

На любом компьютере и в любой операционной системе есть файлы — область данных со своим именем, хранящаяся на носителе. Их принято считать базовыми объектами, из которых складываются директории. В Python с помощью файлов можно сохранять результат работы программы или получать из них данные для обработки в коде.

Python-разработчик
Освойте Python, самый популярный язык программирования
4 030 ₽/мес 6 717 ₽/мес

dffsdd (3)

  • открытие;
  • операции чтения из файла и записи в файл;
  • закрытие.

Разберемся со всеми действиями по порядку.

Открытие файла на чтение и запись в Python

На компьютере файл надо открыть перед тем, как вносить в него изменения. Такое же правила действует и для Python: нужно открыть файл на чтение и запись. Без этапа открытия нельзя читать содержимое или изменять его. Открыть файл можно с помощью функции open() :

open(file, mode='rt')

В функцию в качестве аргументов требуется передать путь файлу (file) и выбрать режим работы (mode). По умолчанию Python выбирает значение rt , но доступны и другие режимы:

Аргумент mode
Как работает
Чтение из файла
Открыть как текстовый файл
Запись в файл и создание файла, если его не существует
Запись в файл и вызовы исключения, если файла не существует
Открыть как двоичный файл
Запись в файл путем добавления новых значений в конец
Работа в режиме чтения и записи

Можно комбинировать режимы и использовать сразу несколько. К примеру, по умолчанию функция open() принимает аргумент rt . Это значит, что файл будет открыт в виде текстового документа для чтения. С помощью r+ и w+ можно открыть файл сразу для чтения и записи на Python. В первом случае несуществующие файлы будут создаваться, а во втором такое действие спровоцирует вызов исключения.

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

f = open('data.txt')

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

f = open('data.txt', 'w+')

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

f = open('data.txt', 'w+') # действия с файлом f.close()

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

with open('data.txt', 'w+') as f: # действия с файлом

При открытии файла можно дополнительно указать кодировку, если нужна специфическая или требуется больше контроля над работой кода:

with open('data.txt', 'w+', encoding='utf-8') as f: # действия с файлом

Кодировку можно указать третьим параметром и при обычном способе открытия:

f = open('data.txt', 'w+', encoding='utf-8') # действия с файлом f.close()

Чтение файла

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

file.read(size)

В строке выше file обозначает объект, с которым работаем, а size — количество символов для чтения. Если ничего не указать в качестве аргумента функции read() , то получится прочитать сразу все содержимое документа.

Для примера: создадим в проекте file.txt и запишем в него строку «Привет, Python!». Теперь прочитаем первые шесть символов из файла:

with open('file.txt', 'r', encoding='utf-8') as f: data = f.read(6) print(data)

Если запустить код, то Python выведет в консоль фразу «Привет» — это и есть первые шесть символов строки «Привет, Python!» в file.txt:

>>> Привет

Теперь отредактируем код. В этом примере не будем передавать никакие аргументы в функцию read() :

with open('file.txt', 'r', encoding='utf-8') as f: data = f.read() print(data) >>> Привет, Python!

В этом случае система выводит сразу все содержимое файла.

Содержимое файла можно считывать построчно. Убедимся в этом, отредактировав file.txt. Добавим в него список продуктов:

Морковь Сметана Мука Яблоки

Теперь прочитаем этот список с помощью функции readline() :

with open('file.txt', 'r', encoding='utf-8') as f: print(f.readline()) >>> Морковь

Python прочитал первую строку списка продуктов. Если вызвать функцию readline() несколько раз, то получится прочитать последующие строки файла:

with open('file.txt', 'r', encoding='utf-8') as f: print(f.readline()) print(f.readline()) print(f.readline()) print(f.readline()) >>> Морковь >>> Сметана >>> Мука >>> Яблоки

Более удобно последовательное чтение с помощью readline() можно реализовать в цикле:

with open('file.txt', 'r', encoding='utf-8') as f: for line in f: print(line) >>> Морковь >>> Сметана >>> Мука >>> Яблоки

Все строки файла можно прочитать с помощью метода readlines() , возвращающего содержимое в виде списка вместе со специальными символами:

with open('file.txt', 'r', encoding='utf-8') as f: data = f.readlines() print(data) >>> ['Морковь\n', 'Сметана\n', 'Мука\n', 'Яблоки']

Такое чтение можно реализовать и без метода readlines() , воспользовавшись конструктором списков list() :

with open('file.txt', 'r', encoding='utf-8') as f: data = list(f) print(data) >>> ['Морковь\n', 'Сметана\n', 'Мука\n', 'Яблоки']

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

Запись в файл на Python

Для записи файла в Python используется функция write() . В качестве аргумента ей следует передать строку, содержимое которой будет записано:

file.write(string)

Удалим все содержимое file.txt и запишем в него строку «Привет, Python!»:

with open('file.txt', 'a', encoding='utf-8') as f: data = 'Привет, Python!' f.write(data)

Обратите внимание, что в этом примере мы открыли файл в режиме a, что позволяет записывать новые строки в конец. Выполняем код, открываем файл — теперь в нем содержится строка «Привет, Python!».

В файл можно записать сразу список строк. Для этого применяется метод writelines() , которому в качестве аргумента надо передать сам список. В качестве примера создадим переменную со списком продуктов и запишем ее в file.txt:

with open('file.txt', 'a', encoding='utf-8') as f: grocery = ['Морковь', 'Яблоки', 'Мука', 'Молоко'] f.writelines(grocery)

Если выполнить код и проверить file.txt, то мы увидим единую строку без пробелов. Все дело в том, что метод writelines() не добавляет разделители строк автоматически. Нужно сделать это вручную, прописав \n каждому элементу списка:

with open('file.txt', 'a', encoding='utf-8') as f: grocery = ['Морковь\n', 'Яблоки\n', 'Мука\n', 'Молоко\n'] f.writelines(grocery)

Теперь при выполнении кода каждый элемент списка будет записываться на новую строку.

Станьте разработчиком на Python и решайте самые разные задачи: от написания кода до автоматизации процессов

Управление указателем

В Python есть возможность явно задать позицию указателя в файле — для этого используется метод seek(). Узнать текущую позицию можно с помощью метода tell() .

Рассмотрим принципы работы с методами на примере. Откроем file.txt в режиме доступа r+ и запишем в него строку «0123456789ABCDEF»:

with open('file.txt', 'r+', encoding='utf-8') as f: f.write('0123456789ABCDEF')

Теперь прочитаем седьмой символ в строке. Для этого воспользуемся методом seek() для перемещения указателя. В качестве аргумента надо передать функции аргумент смещения в байтах. Вспомним, что нумерация строк начинается с нуля, а нам надо прочитать седьмой символ строки. Значит, укажем смещение в шесть байтов:

with open('file.txt', 'r+', encoding='utf-8') as f: f.write('123456789ABCDEF') f.seek(5) data = f.read(1) print(data) >>> 6

Можно осуществить смещение с конца, тогда в качестве второго элемента надо передать отправную точку для формирования смещения. Всего доступны три начальные позиции:

  • 0 — от начала файла;
  • 1 — от текущей позиции;
  • 2 — от конца файла.

Теперь прочитаем четвертый символ с конца строки:

with open('file.txt', 'r+b') as f: f.seek(-4, 2) data = f.read(1) print(data) >>> b'C'

Узнать байт позиции указателя можно с помощью метода tell() :

with open('file.txt', 'r+', encoding='utf-8') as f: f.write('123456789ABCDEF') f.read(5) print(f.tell())

Работа с файловой системой

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

Для работы с файловой системой на Python используют встроенная библиотека OS. Ее необходимо отдельно импортировать в код проекта, чтобы получить доступа к ее методам:

import os

Теперь узнаем с помощью Python текущий каталог. Делаем это с помощью метода getcwd() . В выводе метода получим путь к папке, в которой сейчас находимся:

import os print(os.getcwd()) >>> /Users/daniilshat/PycharmProjects/pythonProject

С помощью метода listdir() можно получить список с содержимым каталога. В качестве аргумента можно передать путь к директории; если этого не сделать, то система покажет содержимое текущего каталога:

import os # содержимое текущего каталога print(os.listdir()) # содержимое директории PycharmProjects print(os.listdir('/Users/daniilshat/PycharmProjects')) >>> ['file.txt', 'main.py', '.idea'] >>> ['.DS_Store', 'pythonProject', 'bot', 'love-couples']

Для создания новых директорий файлов в Python используют метод mkdir() . В качестве аргумента ему надо передать полный путь, включая название новой директории. Для примера создадим директорию Example в PycharmProjects:

import os # содержимое директории PycharmProjects до создания print(os.listdir('/Users/daniilshat/PycharmProjects')) os.mkdir('/Users/daniilshat/PycharmProjects/Example') # содержимое директории PycharmProjects после создания print(os.listdir('/Users/daniilshat/PycharmProjects')) >>> ['.DS_Store', 'pythonProject', 'bot', 'love-couples'] >>> ['.DS_Store', 'pythonProject', 'Example', 'bot', 'love-couples']

С помощью Python можно переименовывать файлы и директории. Для этого используется метода rename() , которому необходимо передать в качестве аргументов путь к старому и новым файлам. Переименуем директорию Example в New Example:

import os dir = '/Users/daniilshat/PycharmProjects' old_file = os.path.join(dir, 'Example') new_file = os.path.join(dir, 'New Example') # содержимое директории PycharmProjects до переименования print(os.listdir(dir)) os.rename(old_file, new_file) # содержимое директории PycharmProjects после переименования создания print(os.listdir(dir)) >>> ['.DS_Store', 'pythonProject', 'Example', 'bot', 'love-couples'] >>> ['.DS_Store', 'pythonProject', 'bot', 'New Example', 'love-couples']

Для удаления пустых директорий файлов в Python можно использовать метод rmdir() , а для удаления директории со всем содержимым — shutil.rmtree() . В качестве аргумента требуется передать путь к директории. Для примера удалим директорию New Example, которую недавно создали:

import os # содержимое директории PycharmProjects до удаления print(os.listdir('/Users/daniilshat/PycharmProjects')) os.rmdir('/Users/daniilshat/PycharmProjects/New Example') # содержимое директории PycharmProjects после удаления print(os.listdir('/Users/daniilshat/PycharmProjects')) >>> ['.DS_Store', 'pythonProject', 'bot', 'New Example', 'love-couples'] >>> ['.DS_Store', 'pythonProject', 'bot', 'love-couples']

Коротко о том, как работать с файлами в Python

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

Метод Что делает
os.getcwd() Узнать текущий каталог
os.listdir(path) Узнать список содержимого каталога
os.mkdir(path) Создать директорию
os.rename(old_file, new_file) Переименовать файл или директорию
os.rmdir(path) Удалить пустую директорию
shutil.rmtree(path) Удалить директорию со всем содержимым
file.read(size) Прочитать определенное количество символов из файла
file.readline() Прочитать строку из файла
file.readlines() Прочитать все строки из файла
file.write(string) Записать строку в файл
file.writelines(list) Записать список строк в файл
file.seek(int) Переместить указатель
file.tell() Узнать текущее положение указателя

Python-разработчик

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *