Как переместить первую строку в конец текстового файла?

Есть ли более лаконичный способ переместить первую строку в конец текстового файла чем то, что придумал я?

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}")
→ Ссылка