2015-12-06 3 views
0

я сделать код для чтения каждой строки «имя» файла:чтения файлов в Python - Последняя строка «None»

def readFile(name): 
    with open(name) as f: 
     for line in f: 
      line = line.strip() 
      print line 

Мой файл есть это:

11001 
10010 

Мой выход :

11001 
10010 
None 

Почему нет?

+0

'F = Int ('0b' + f.readline(), 2)' Python двоичные значения начинаются с '0b' –

+0

@DhruvSomani нет, это просто буквальное обозначение. У Томаса все правильно: 'int (" 11001 ", 2)' действительно. 'int (" 11001/n ", 2)' is not. –

+0

@AdamSmith, Да, это неверно, но 'int (" 11001 \ n ", 2')' является действительным (проверьте свою косую черту). Ведущее и конечное пробелы в порядке для 'int()'. –

ответ

2

Вы имеете правильную идею, вот ловкий трюк ,

def readFile(name): 
    with open(name) as f: 
     for line in f: 
      line = line.rstrip() 
      print line 
+0

Не решает проблему :( – PRVS

+0

@PRVS Является ли последняя строка в вашем файле пустым? –

+0

yes is empty – PRVS

1

Вы должны проверить, что нет «\ г» или «\ п» в результате readline()

+0

Я удаляю \ n конца файла, но не решает. – PRVS

1

Похоже, вы не правильно зачистки вашей линии. Однако не обязательно звонить readline.

numbers = [] 

with open('path/to/your/file.txt') as f: 
    for line in f: 
     line = line.strip() # important! 
     num = int(line, 2) 
     numbers.append(num) 

Если вы просто хотите, чтобы получить только те строки, которые правильно преобразовать в двоичную (и больше строк, которые не будут):

... 
    line = line.strip() 
    try: 
     num = int(line, 2) 
    except ValueError: 
     # line isn't a valid integer in binary 
     pass # but that's okay 
    else: 
     # if it is, let's.... 
     numbers.append(num) 
+0

Вместо использования numbers.append (num) Я использую print num, и я тоже получил None. – PRVS

+0

@PRVS well 'int' никогда не может дать« None », поэтому я не уверен, что вы делаете. Вы не разместили достаточно кода. –

+0

Теперь я делаю это: 'с открытым (имя), как F: \t \t для линии в F: \t \t \t линии = line.strip() \t \t \t Num = INT (линия, 2) \t \t \t печать num' И последняя строка - None. Файл имеет одно число, подобное этому 101010 в каждой строке. – PRVS

Смежные вопросы