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 шт):
Файл - это поток последовательного чтения (и/или записи). Если вы открыли и прочитали весь файл, то он кончился и больше его нельзя прочитать ещё раз. Для того, чтобы прочитать файл ещё раз, нужно либо его закрыть и открыть заново, либо перейти на начало файла с помощью User_File.seek(0).
В третьей строке в 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 про менеджер контекста
Про причины такого поведения вам написали в других ответах.
В данном случае можно записать прочитанные данные в переменную, вывести эти данные, потом эти же данные разбивать на отдельные строки, не читая их заново из файла:
text = User_File.read()
print(text)
User_File_List = text.split('\n')
print(User_File_List)