Как переместить первую строку в конец текстового файла?
Есть ли более лаконичный способ переместить первую строку в конец текстового файла чем то, что придумал я?
with open('my.txt', 'r', encoding='utf-8') as file:
Data = file.readlines()
lines_index_0 = Data[0]
Data[0] = ''
file.close()
with open('my.txt', 'w', encoding='utf-8') as file:
for line in Data:
file.write(line)
file.close()
with open('my.txt', 'a', encoding='utf-8') as file:
file.write(lines_index_0)
file.close()
Ответы (3 шт):
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
with open('my.txt', 'r', encoding='utf-8') as in_file:
data = in_file.readlines()
with open('my.txt', 'w', encoding='utf-8') as out_file:
for line in data[1:]:
out_file.write(line)
out_file.write(data[0])
или так:
with open('my.txt', 'r+', encoding='utf-8') as file:
data = file.readlines()
file.seek(0)
for line in data[1:]:
file.write(line)
file.write(data[0])
Автор решения: Daniil_DP
→ Ссылка
Помимо ответа от S. Nick учитывая комментарии понял что можно обойтись 1 with.
with open('my.txt', 'r+', encoding='utf-8') as file:
lines = file.readlines()
lines_index_0 = lines[0]
del lines[0]
file.seek(0)
file.truncate()
file.writelines(lines)
file.write(lines_index_0)
Автор решения: MaxU
→ Ссылка
Можно воспользоваться встроенным модулем pathlib:
from pathlib import Path
f = Path(r"C:\temp\test.txt")
first_line, _, rest = f.read_text().partition("\n")
f.write_text(f"{rest}\n{first_line}")