2016-02-14 2 views
4

Я пытаюсь прочитать файл, используя следующую инструкцию:Python оператора открыть файл читает строку из пустого файла

input = open("input.txt").read().split('\n') 

Поэтому в основном моя цель состоит в том, чтобы прочитать файл построчно и хранить результаты в массиве , Он отлично работает, когда файл не пуст. Когда входной файл имеет только одну строку len(input) равен 1, это как и ожидалось.

Но когда файл пуст, len(input) все еще дает 1. Что я делаю неправильно?

+0

Какая версия Python вы используете? 2.x или 3.x? – Nicarus

+0

@Nicarus я использую 2.7.9 – ikis

ответ

3

Вы должны использовать open("input.txt").readlines(), а не open("input.txt").read().split("\n"). Если вы попробуете "".split("\n") в интерпретаторе, вы увидите, что результат [''], а не [].

+0

Работы. Отлично! – ikis

+0

@ikis - вы должны отметить это как правильный ответ, если это было вашим решением. – Nicarus

+0

Переполнение стека @Nicarus не позволило мне принять его в течение 10 минут. Я уже пытался. Сделай это, как только он станет доступен. – ikis

0

Ну, это как split работы: Это происходит:

>>> ''.split(',') 
[''] 

и это список из одного элемента, который является пустой строкой.

2

Итерация файл дает вам строки, так что вы можете использовать:

the_input = list(open("input.txt")) 

хотя это будет включать в себя символы новой строки в строках.

+0

Это работает до 3.x? – Nicarus

+1

Да. , , , , , , –

+1

Спасибо, мне было любопытно. , , , , , , – Nicarus

0

Чтение пустой файл возвращает "", а затем разделив, что пустая строка возвращает [""], которая имеет длину 1.

Попробуйте вместо этого:

lines = open("empty.txt").readlines() 
Смежные вопросы