2016-03-27 16 views
-2

Открыть файл mbox-short.txt и прочитать его по строкам. Когда вы найдете строку, которая начинается с «From», как в следующей строке:Ошибка Python: TypeError: объект 'int' не является вызываемым

From stephen.marquard[email protected] Sat Jan 5 09:14:16 2008 

Вы разбор Из строки с помощью раскола() и распечатать второе слово в строке (то есть весь адрес человека который отправил сообщение). Затем распечатайте счет в конце.

Подсказка: не забудьте включить линии, начинающиеся с «От:».

Ссылка для Mbox-short.txt файла: http://www.pythonlearn.com/code/mbox-short.txt

fopen = raw_input('Enter the file name you want to open: ') 
fname = open(fopen) 
line = 0 
count = 0 
pieces = 0 
email = list() 
for line in fname: 
    lines = line.rstrip() 
    if not line.startswith('From '): 
     continue 
    pieces = line.split() 
    print pieces[1] 
print 'There were' ,count(pieces[1]), 'lines in the file with From as the first word 

Я не удалось получить правильный вывод, до последнего сообщения печати.

Исполнение:

Enter the file name you want to open: mbox-short.txt 

[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 

Traceback (most recent call last): 
print 'There were' ,count(pieces[1]), 'lines in the file with From as the first word' 

TypeError: 'int' object is not callable 

Я не знаю, почему я получаю эту TraceBack.

+1

В верхней части вашего скрипта у вас есть 'count = 0', который не подлежит вызову, т. Е. Функция/класс/и т. Д. Что вы ожидали от этого? – Reti43

+0

'count' - это переменная, а не функция. Я думаю, что если вы просто используете: 'print 'В файле были«, штуки [1], «строки в файле с« От первого слова », он должен работать ... – thefoxrocks

+0

Как в других ответах сказано:' count' is не функция, поэтому я не понимаю, почему вы ожидаете ее работы. –

ответ

0

В комментарии в вопросе упоминали , count не указан в качестве функция - вместо этого это int. Вы не можете пройти pieces[1] и ожидать, что он волшебным образом увеличится.

Если вы действительно хотите подсчеты таким образом, просто обновите счетчик, перебирая файл.

fopen = raw_input('Enter the file name you want to open: ') 
fname = open(fopen) 
line = 0 # unnecessary 
count = 0 
pieces = 0 # also unnecessary 
email = list() # also unnecessary 
for line in fname: 
    lines = line.rstrip() 
    if not line.startswith('From '): 
     continue 
    pieces = line.split() 
    print pieces[1] 
    count = count + 1 # increment here - counts number of lines in file 
print 'There were', count, 'lines in the file with From as the first word 
+1

Вы добавляете дополнительные промежутки в выход, кстати. – TigerhawkT3

+0

Отредактировано. Благодаря! Я не использовал неопределенную версию 'print' в то время ... –

+1

Так будет и в Python 3. Разделитель по умолчанию - это пробел. – TigerhawkT3

0

'int' object is not callablecount = 0, а затем count(pieces[1]). У вас есть целое число, и вы его вызываете. После этого:

pieces = line.split() 
print pieces[1] 

Добавить это:

count += 1 

А затем изменить:

print 'There were' ,count(pieces[1]), 

к этому:

print 'There were', count, 
+0

Большое вам спасибо, что помогло мне с большинством моих проблем. – Roy

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