2016-04-19 4 views
-1

Это мой кодКакой режим поиска в python используется для записи без перезаписи?

fo = open("foo.txt", "r") 
a = fo.readlines(); 
fo1 = open("write.txt", "w") 
j=len(a) 
print j 
i=0 


while i < j: 

    if (a[i] == "hi\n"): 

     fo1.write('hi\nhow\nare\nyou'); 

     if (a[i] == "hello\n"): 

     fo1.seek(-3, 2) 
     fo1.write('\nalways\nnot\n'); 

     i += 1 


     fo.close() 
     fo1.close() 

Есть два текстовых файла

1) foo.txt - Содержит

hi 
hello 

2) write.txt пустой файл

Он проверяет a [i] с приветствием, поскольку он приветствует, он выполнит эту инструкцию кода

fo1.write('hi\nhow\nare\nyou'); 

Так, write.txt будет как этот

how 
are 
you 

После этого он проверяет, имеет [I] является привет как это привет, он будет перемещать указатель от конца до -3 и будет написать этот код заявление

fo1.write('\nalways\nnot\n'); 

Результат должен быть, как

How 
are 
always 
not 
you 

Но выходной ток я получаю

How 
are 
always 
not 

выше выход получил «вы» удалили ожидаемого результата это

How 
are 
always 
not 
you 

Я пытался Append и режим записи, оба делают то же самое

ТАК, как я могу писать без перезаписи?

+3

Несмотря на то, что вы можете ожидать от своих впечатлений от текстовых редакторов и Microsoft Word, нет никакого режима вставки для записи файлов. – user2357112

+0

Действительно, ваша лучшая надежда состоит в том, чтобы кэшировать нижнюю часть документа, добавить новый текст и вставить его снова. Однако это будет медленным в больших файлах. – Rockybilly

ответ

1

Проблема в том, что вы ожидаете, что запись будет введена в текущей позиции. Когда вы установите положение файла, он начнет запись в этой позиции и перезапишет данные.

Для предотвращения перезаписи, необходимо заново записать данные после данных, которые вы пишете

fo1.seek(-3, 2) 
end_data = fo1.read() 
fo1.seek(-3, 2) 
fo1.write('\nalways\nnot\n') 
fo1.write(end_data) 

Кроме того, вам не нужно использовать точку с запятой в Python.

+0

Большое спасибо, это сработало, Ты спас нашу задницу !!! Еще раз спасибо !! – Basil

Смежные вопросы