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

Как изменить формат текстового документа на python

  • автор:

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

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

Отслеживать
52.2k 11 11 золотых знаков 108 108 серебряных знаков 311 311 бронзовых знаков
задан 15 апр 2017 в 18:28
121 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 сделать в py

Сделать ввод текстовым файлом Input.txt, а вывод output.txt
var a : longint; s : string; i, n : integer; begin readln(a); str(a, s);.

Помогите нубу 🙂 сделать два простых скрипта (открытие txt и удаление txt)
Здраствуйте, я в VBS почти полный ноль, помогите сделать два простых скрипта: Первый скрипт.

Как сделать перенос из отдного txt файла текста в другой txt файл в Turbo C?
Надо сделать с потоками. fopen fgets fputs — с этими функциями

Переименовать все файлы lab01.txt, Inf_lab02.txt … в каталоге К в lab01_Inf.txt, lab02_Inf.txt,
Пожалуйста, помогите разобраться как работать с переменной в цикле. Задание: В указанном.

Автоматизируй это!

Эксперт Python

7540 / 4556 / 1206
Регистрация: 30.03.2015
Сообщений: 13,118
Записей в блоге: 29
Aker05, теперь то же самое на русском, чтобы было понятно тем, кто не владеет телепатией
Регистрация: 16.12.2020
Сообщений: 66

есть у меня текстовый документ с кодом, изменяю его с .txt на .py ,но после этих действий он все равно остается текстовым документом c форматом .txt

Автоматизируй это!

Эксперт Python

7540 / 4556 / 1206
Регистрация: 30.03.2015
Сообщений: 13,118
Записей в блоге: 29

Aker05, значит как то не так переименовываешь. Используй какой нибудь нотепад++ или пичарм. А еще лучше скопируй содержимое и вставь в файл пи.

Am I evil? Yes, I am!

Эксперт PythonЭксперт Java

18967 / 9662 / 2710
Регистрация: 21.10.2017
Сообщений: 21,473

Welemir1, вангую, добавляет расшиерение .py к.txt-файлу, в винде со скрытыми зарегистрированными расширениями.

Регистрация: 16.12.2020
Сообщений: 66

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

Добавлено через 37 секунд
это как ?

Am I evil? Yes, I am!

Эксперт PythonЭксперт Java

18967 / 9662 / 2710
Регистрация: 21.10.2017
Сообщений: 21,473
Aker05, ебстественно. Винде нужно сказать — чем открывать файл .py
Регистрация: 16.12.2020
Сообщений: 66
ну откроется он, а работать ведь не будет
Автоматизируй это!

Эксперт Python

7540 / 4556 / 1206
Регистрация: 30.03.2015
Сообщений: 13,118
Записей в блоге: 29
Aker05, а если почитать как запускать питон файлы? установить ИДЕ?
Регистрация: 16.12.2020
Сообщений: 66

через идле сделал чтоб слово выводилось просто, сохраняю на рабочий стол и опять в блокнот превращается.

Am I evil? Yes, I am!

Эксперт PythonЭксперт Java

18967 / 9662 / 2710
Регистрация: 21.10.2017
Сообщений: 21,473
Aker05, давай-ка по пунктам — чего ты хочешь добиться?
Регистрация: 16.12.2020
Сообщений: 66

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

Am I evil? Yes, I am!

Эксперт PythonЭксперт Java

18967 / 9662 / 2710
Регистрация: 21.10.2017
Сообщений: 21,473
Переименуй тотал коммандером. Он показывает зарегистрированные расширения
Регистрация: 16.12.2020
Сообщений: 66
откуда скачать посоветуешь?
Am I evil? Yes, I am!

Эксперт PythonЭксперт Java

18967 / 9662 / 2710
Регистрация: 21.10.2017
Сообщений: 21,473
В гугле забанили?
Автоматизируй это!

Эксперт Python

7540 / 4556 / 1206
Регистрация: 30.03.2015
Сообщений: 13,118
Записей в блоге: 29
Aker05, не используй всякую ерунду типа идле или сублиме, установи PyCharm
Am I evil? Yes, I am!

Эксперт PythonЭксперт Java

18967 / 9662 / 2710
Регистрация: 21.10.2017
Сообщений: 21,473
Welemir1, вангую, что питон в пат не прописан. Иначе винда зарегистрировала бы расширение.
Наверно.
Регистрация: 16.12.2020
Сообщений: 66
он ругается на меня всегда ,я удалил его) и есть ли кряк где то без вирусов на пичарм?
?
Am I evil? Yes, I am!

Эксперт PythonЭксперт Java

18967 / 9662 / 2710
Регистрация: 21.10.2017
Сообщений: 21,473
Aker05, качай Pycharm Community, он бесплатный
Регистрация: 16.12.2020
Сообщений: 66

lite или powerpack?

Добавлено через 23 секунды
и что такое пат?

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Не получается открыть файл txt
Хелп! Помогите пожалуйста, не могу открыть файл! Что делать? #include <iostream>.

Не получается читать содержимое txt-файла в массив
Не хочет записывать данные в массив. проверьте у себя по возможности и отпишитесь. #include.

Нужно сделать сохранение из мемо1 в файл txt. Ошибка — немогу сделать.
Нужно сделать сохранение из мемо1 в файл txt. Ошибка — немогу сделать.

Сделать ссылку на страницу. В одном модуле она есть, а в другом не получается сделать
Всем привет! Может кто-то подскажет, как сделать в PHP скрипте модуля ссылку на страницу. .

Не получается: Создать программой .txt и написать несколько строк, поменять в нем 2 строку на другую, в 3 строке
Возникла серьезная проблема при создании кода для лабораторной работы: Суть работы такова: .

Как изменить расширение файла на python?

phaggi

Вы понимаете, что расширение файла должно отражать содержание файла? Вам надо перекодировать файл формата jpg в формат png. А просто переименовать — ничего хорошего не даст.

anudas

Алан Гибизов, А вдруг ТС хочет просто запутать врагов? 🙂 Тогда очень даже нормально — изменить расширение файла, и пусть потом, когда твой комп окажется в их злобных руках, помучаются, поугадывают, какой программой работать с каким файлом. Главное — самому не запутаться, что во что переименовал.

Решения вопроса 1

Расширение — это просто часть имени файла, оно не влияет на его содержимое.
Просто сменив расширение файла на .png вы не измените формат изображения.
Перекодировать изображение jpg -> png можно с помощью библиотеки pillow.

from PIL import Image image = Image.open('путь/до/файла/image.jpg') image.save('путь/до/файла/image.png')

Ответ написан более двух лет назад
Комментировать
Нравится Комментировать
Ответы на вопрос 0
Ваш ответ на вопрос

Войдите, чтобы написать ответ

python

  • Python

Как получить url страницы и какие есть способы изменять html код через python?

  • 2 подписчика
  • 3 часа назад
  • 50 просмотров

PY — Python Script

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

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

Вот небольшой, но неполный список программ, которые могут открывать документы PY:

  • gedit (Linux)
  • GNU Emacs (Linux)
  • MacroMates TextMate (Mac)
  • Microsoft Notepad (Windows)
  • Notepad++ (Windows)
  • Python Software Foundation Python (Windows, Mac & Linux)
  • Other text editor

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

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