2013-08-03 8 views
1

У меня есть эта ошибка при выполнении этого кода с Python:TypeError: "NoneType" объект unsubscriptable

TypeError: "NoneType" object is unsubscriptable".

Код:

number = 0 

with open('playlist.txt') as read_number_lines: 
    for line in read_number_lines: 
     if line.strip(): 
      number += 1 

number = number - 1 
print 'number: ', number 

for i in range(number): 
    author_ = raw_input('author: ') 
    line = input('line: ') 
    file = open('playlist.txt','a').writelines(' - ' + author_)[line] 

Как я могу это исправить?

+1

'writelines ('-' + автор _) [строки]', что вы пытаясь сделать здесь? –

+0

Напишите автору на определенной строке рядом с названием песни. –

+0

Опубликуйте свой ожидаемый результат, вы просто не можете писать с любым номером строки, который вы хотите использовать 'file.writelines'. –

ответ

1

У вас есть несколько проблем в

file = open('playlist.txt','a').writelines(' - ' + author_)[line] 

Непосредственным источником вашей ошибки является то, что .writelines() не возвращает ничего (так он возвращает None), который вы пытаетесь индексировать с помощью [line]. Это вызывает вашу ошибку.

Кроме того, вы не должны вызывать этот метод непосредственно по вызову open().

Весь цикл for таинственный для меня. Вы снова открываете этот файл во время каждой итерации цикла (который вы не хотите делать, возможно, он даже не работает).

Возможно, вы хотели сделать что-то вроде

with open('playlist.txt','a') as file: 
    for i in range(number): 
     author_ = raw_input('author: ') 
     line = raw_input('line: ') 
     file.write(author + " - " + line) 

, но это по-прежнему трудно понять точку этого ...

+0

Я думаю ' line' - номер строки, на которой OP пытается записать содержимое. –

+0

Правильный Ashwini. –

+0

Переменная 'line' является целым числом, которое я использую для ссылки на строку записи. Автором будет строка, написанная в строке, выбранной мной. :) –

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