Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прочитать из файла, А потом изменить строку 
V
    Опции темы
HellanD
Дата 5.10.2006, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 443
Регистрация: 16.5.2006
Где: Киев

Репутация: 1
Всего: 2



Можно вопрос!?
С помощь какой функции можно прочитать из файла текст, с целью изменения в нем отдельной группы символов?
Или надо создавать другой файл а результат писать туды??
 smile 


--------------------
Мой сайт на django
Japanese Innovations
PM ICQ   Вверх
pythonwin
Дата 5.10.2006, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Код

f=open("/my1.txt","w")
f.writelines([str(x)+"\n" for x in range(100)])
f.close()
f=open("/my1.txt","r+")
s='12'
s2='1_2'
t1=-10
while 1==1:
    if s1 is None: break
    t1=f.tell()
    s1 = f.readline()
    if s in s1: break
f.seek(t1)
f.write(s1.replace(s, s2))
f.close()


хотя я так и не смог исправить баг - при записи новой строки удаляется символ последуюшей smile
PM WWW GTalk Jabber   Вверх
albertn
Дата 5.10.2006, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 368
Регистрация: 17.7.2006
Где: г. Ставрополь

Репутация: 30
Всего: 34



Цитата(pythonwin @  5.10.2006,  11:23 Найти цитируемый пост)
хотя я так и не смог исправить баг - при записи новой строки удаляется символ последуюшей smile 

Дык это естественно. Ты же не вставляешь в файл часть, а заменяешь некоторые символы. Если заменишь больше, то следующий символ затрется.
PM WWW ICQ   Вверх
pythonwin
Дата 5.10.2006, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Цитата(albertn @  5.10.2006,  23:09 Найти цитируемый пост)

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

сможешь это иправить?
PM WWW GTalk Jabber   Вверх
albertn
Дата 5.10.2006, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 368
Регистрация: 17.7.2006
Где: г. Ставрополь

Репутация: 30
Всего: 34



Цитата(pythonwin @  5.10.2006,  16:14 Найти цитируемый пост)
сможешь это иправить? 

Нельзя в середину файла вставить дополнительный кусок (на сколько я знаю). Это получаестя, что файл просто разорвали, записали часть, а потом соеденили. Фрагментация получается. Если изменять символы, то такой режим прокатит, а если добавлять, то это только новый создавать.
По крайней мере я так это представляю.
PM WWW ICQ   Вверх
pythonwin
Дата 5.10.2006, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



albertn, а если файл большой? (500 Мб)

что делать? smile
PM WWW GTalk Jabber   Вверх
albertn
Дата 5.10.2006, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 368
Регистрация: 17.7.2006
Где: г. Ставрополь

Репутация: 30
Всего: 34



Цитата(pythonwin @ 5.10.2006,  16:31)
albertn, а если файл большой? (500 Мб)

что делать? smile

Код писать не буду, лучше на пальцах покажу.
В позиции x надо добавить y байт.
Код

a1 = data
a2 = f.read(len(data))
f.seek(x)
f.write(a1)
a1 = f.read(len(data))
f.seek(x+len(data))
f.write(a2)
...

PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1284 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.