Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 15, 2013 15:42:16

buddha
От:
Зарегистрирован: 2012-03-02
Сообщения: 422
Репутация: +  15  -
Профиль   Отправить e-mail  

Как записать текст в файл не поверх имеющегося текста, а сдвигая его?

Вот например python3.3:

file = open('some.txt', 'w+')
text = '''
Первая строка
ВТорая строка
Третья строка
Четверта строка
'''
file.write(text)
file.seek(text.find('Третья'))
text2 = 'ааапп кук вкасвки 21312312313dddddddddd'
file.write(text2)
file.seek(0)
print(file.read())

получается text2 накладывается на строки: “Третья строка
Четверта строка”, как писать, чтобы эти строки отодвигались? Неужели отрезать этот кусок, вписывать , что нужно, а потом вырезанный кусок вставлять на место?

Офлайн

#2 Апрель 15, 2013 15:51:51

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Как записать текст в файл не поверх имеющегося текста, а сдвигая его?

нет, обычно полностью перезаписывают . Как ты себе представляшь отодвигание строк в памяти?

Офлайн

#3 Апрель 15, 2013 16:32:45

buddha
От:
Зарегистрирован: 2012-03-02
Сообщения: 422
Репутация: +  15  -
Профиль   Отправить e-mail  

Как записать текст в файл не поверх имеющегося текста, а сдвигая его?

Сделал вот так:

file = open('some.txt', 'w+')
text = '''
Первая строка
ВТорая строка
Третья строка
Четверта строка
'''
file.write(text)
file.seek(text.find('Третья')+1)
file_chunk = file.read()
file.seek(text.find('Третья')+1)
text2 = '\nааапп кук вкасвки 21312312313dddddddddd'
file.write(text2)
file.write(file_chunk)
file.seek(0)
print(file.read())

Смотрится правда не ахти, но наверно это нормально при работе с файлами.

Офлайн

#4 Апрель 15, 2013 19:59:20

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 252
Репутация: +  4  -
Профиль   Отправить e-mail  

Как записать текст в файл не поверх имеющегося текста, а сдвигая его?

Если я правильно понял, вы хотите это:

text2 = 'ааапп кук вкасвки 21312312313dddddddddd'
with open('some.txt') as file:
        my_text=file.read()
with open('some.txt', 'w') as file:
        my_text=my_text.replace('Третья строка\nЧетверта строка','Третья строка\n'+text2+'\nЧетверта строка')
        file.write(my_text)
with open('some.txt') as file:
        print(file.read())
На выходе:
Первая строка
ВТорая строка
Третья строка
ааапп кук вкасвки 21312312313dddddddddd
Четверта строка

Офлайн

#5 Апрель 15, 2013 20:01:58

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 252
Репутация: +  4  -
Профиль   Отправить e-mail  

Как записать текст в файл не поверх имеющегося текста, а сдвигая его?

Как вариант, прочитайте текст в массив:

# Построчно загрузить файл в массив и вернуть как переменную
def load_array(file):
        with open(file) as f:
                array=f.read().splitlines()
        return array
Затем вставляйте элемент в массив и перезаписывайте файл.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version