@albertalexandrov

Запись строк только в конец файла?

Всем привет!

Есть некоторый код:

var1 = 0
var2 = 0
var3 = 0

with open(f'./tmp/tmp', 'w') as file:
    file.write('line 1\n')
    var1 = file.tell()
    file.close()

with open('./tmp/tmp', 'a') as file:
    file.write('line 2\n')
    var2 = file.tell()
    file.close()

with open('./tmp/tmp', 'a') as file:
    file.seek(var1)
    file.write('line 3\n')
    file.close()

with open('./tmp/tmp', 'a') as file:
    file.seek(var2, var3)
    file.write('line 4\n')
    file.close()


По итогу, в файле следующий ответ:

line 1
line 2
line 3
line 4


То есть перемещение указателя не оказало никакого влияния (или только для чтения?). Почему такой вывод?
  • Вопрос задан
  • 145 просмотров
Пригласить эксперта
Ответы на вопрос 1
BlackLacost
@BlackLacost
Если вы хотели между первой и второй линей вставить третью, а получившиеся третей и второй четвертую, то это можно сделать так:

with open('tmp', 'w') as file:
    file.write('line 1\n')

with open('tmp', 'a') as file:
    file.write('line 2\n')

with open('tmp', 'r+') as fd:
    contents = fd.readlines()
    contents.insert(1, 'line 3\n')
    fd.seek(0)
    fd.writelines(contents)
    
with open('tmp', 'r+') as fd:
    contents = fd.readlines()
    contents.insert(2, 'line 4\n')
    fd.seek(0)
    fd.writelines(contents)
    
with open('tmp') as f:
    for line in f:
        print(line, end="")

line 1
line 3
line 4
line 2
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы