2012-06-18 2 views
3

У меня возникла проблема с файлом, который я пишу, в основном, что я хочу, чтобы он сделал, у меня есть вход(), который говорит «введите свое имя:», хранящийся в переменной, теперь я создал файл, написал то, что я хотел, и на основании того, что у человека есть вход(), я хочу поместить эту информацию в файл по определенной строке ...python open() function issue

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

eg;

index = open('index.html' 'w') 
index.write(""" blah blah blah 
       blah blah blah 
       blah """) 
index.seek(20) 
index.write(variable) 
index.close() 

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

Я использую Python3.2.

+2

Почему у вас нет шаблона, заполните его новыми данными и динамически создайте целую строку? – eumiro

+3

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

ответ

2

Чтобы вставить текст в файл, прочитайте в тексте из файла в переменную. Вставьте текст в нужное место, а затем напишите текст обратно в файл.

Как так:

with open("filename", 'rt', encoding="utf8") as infile: 
    text = infile.read() 

text = text[:20] + 'inserted text' + text[20:] 


with open("filename", 'wt', encoding="utf8") as outfile: 
    outfile.write(text) 

Однако, из вашего вопроса, я подозреваю, что файл на самом деле это заранее не существует, и в этом случае лучше всего просто создать весь текст в качестве переменной первого, а затем записать его в файл.

+0

как вы поместите переменную во вставленный бит текста? вы помещаете кавычки или просто записываете переменную? – thechrishaddad

+0

Хорошо, это сработало спасибо, так что в основном, что этот код делает, это перечитывать файл и модифицировать его, а затем повторно выводить файл с включенным новым текстом, потому что вы не можете просто изменить текущий существующий файл? – thechrishaddad

+0

@ user1265535: Ваш первый вопрос отвечает в первой части каждого учебника по Python. Я предлагаю вам пройти учебное пособие или два, прежде чем продолжить. Да, вы можете * изменить * текущий существующий файл. Но вы не можете * вставить * в него, что очевидно, как только вы знаете, как работает файл. –