Python3 проблема пустого файла

User_File = open(File_Name, "r")
print(User_File.read())

User_File_List = User_File.read().split('\n')
print(User_File_List)

До этого кода в файл записывается текст, после этой части кода программа выдает:

Hello.\nMy name is Roman.\nI am 25.\nI am an Engineer. ['']

То есть он сначала читает его, а потом делит, но файл пустой?


Ответы (3 шт):

Автор решения: CrazyElf

Файл - это поток последовательного чтения (и/или записи). Если вы открыли и прочитали весь файл, то он кончился и больше его нельзя прочитать ещё раз. Для того, чтобы прочитать файл ещё раз, нужно либо его закрыть и открыть заново, либо перейти на начало файла с помощью User_File.seek(0).

→ Ссылка
Автор решения: Jack_oS

В третьей строке в User_File_List ничего нет, т.к. на предыдущей файл вычитан целиком, выведен на печать и не закрыт.

Лучше так: код вычитывает файл, печатает и закрывает файл:

with open(File_Name, 'r') as file:
    # read & print the entire file
    print(file.read())

Так вычитывает файл, сплитует, печатает и закрывает файл:

with open(File_Name, 'r') as file:
    # read & print the entire file with split
    print(file.read().split('\n'))

PS про менеджер контекста

→ Ссылка
Автор решения: insolor

Про причины такого поведения вам написали в других ответах.

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

text = User_File.read()
print(text)

User_File_List = text.split('\n')
print(User_File_List)
→ Ссылка