Найти - Пользователи
Полная версия: Прошу помощи (запись изменений в файл)
Начало » Python для экспертов » Прошу помощи (запись изменений в файл)
1
yurgo
Здравствуйте!
Я не программист, но возникла необходимость решить определённую задачу, прошу помочь…

Суть задачи - нужно в файле заменить определённое сочетание символов другим сочетанием.
Задачу я вообще то решил, но не совсем так, как хотелось бы:

import os
if os.access(“./Zamena-test.rtf”, os.F_OK):
print “файл найден”
else:
print “файл не найден”

import string

f_old = open(“./Zamena-rtf.txt”, “rt”)
f_new = open(“./Zamena-rtf-n.txt”, “wt”)

for l in fd.readlines():
a = string.find(l, “\\'db\\'db\\'db\\'db”)
if a > -1:
b = string.replace (l, “\\'db\\'db\\'db\\'db”, “\\'af\\'af”)
f_new.write(b)
else:
f_new.write(l)
f_old.close()
f_new.close()
os.rename(“./Zamena-rtf-n.txt”, “./Zamena-rtf.txt”)


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

Теперь собственно вопрос:

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

Спасибо!
Юрий.
slav0nic
1) может проще заюзать sed команду, и не изобретать велосипед?)

2) а что мешает писать всё в переменную, которую потом обрабатывать и записать в исходный файл, открыв файл на запись?
хотя это приемлимо при небольших разерах файлов
есть вариант открывать/закрывать файл на запись, двигая указатель, но это тоже не сильно красиво
ofigetitelno
:)
f = open('test.txt', 'r+b')
pos = 0
for l in f.readlines():
f.seek(pos)
f.write(l.replace('aaa', 'bbb'))
pos = f.tell()
f.close()
Попробуй так…
Не используй модуль string, пользуйся методами строки…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB