2014-12-13 5 views
0

Работа над догадкой, какая игра в школе и не может найти способ удалить строку из .txt fie. Я получаю следующее сообщение об ошибке:Ошибка при удалении строки из файла .txt

<_io.TextIOWrapper name='characters.txt' mode='r' encoding='cp1252'> 
<_io.TextIOWrapper name='characters.txt' mode='r' encoding='cp1252'> 
<_io.TextIOWrapper name='characters.txt' mode='r' encoding='cp1252'> 

Вот код:

information = open("characters.txt","r") 

hair = input("Does your character have black hair?") #Asks for input under variable name hair 
if hair == "yes": 
    for line in lines: #Breaks it down into individual lines 
     if line.split(',')[1] == "Black hair":   
      lines.remove(line) 
     print(information) 
+1

Это не похоже на сообщение об ошибке. Как и где вы вычисляете значение переменной «информация»? Измените свой вопрос, чтобы включить всю соответствующую информацию (и, в зависимости от обстоятельств, удалить ненужную информацию). – tripleee

+0

Хорошо, я, наконец, исправил его, но теперь он пропускает одну строку, поэтому не удаляется. Так, например, если в файле .txt были коричневые волосы поверх других коричневых волос, то это удалит только один из них? –

+0

Примите один из ответов здесь (напишите свой собственный, если вам не нравятся другие и объясните, как вы его исправили). Отправьте новый вопрос с новым кодом и новой проблемой. Добавьте ссылку на эту ссылку для фона. – tripleee

ответ

1

Это не ошибка. Это строковое представление открытого файлового объекта:

>>> open('a.txt') 
<_io.TextIOWrapper name='a.txt' mode='r' encoding='cp1252'> 
>>> 

Если вы хотите распечатать содержимое этого файла, вам нужно будет назвать его read метод:

print(information.read()) 

Метод read прочтет все содержимое файла в строку. Если вам нужна только одна строка, используйте метод readline.

0

Возможно, вы не хотите печатать information, но не совсем понятно, что вы хотите напечатать.

features = dict() 
with open("characters.txt","r") as information: 
    for line in information: 
     _, haircolor = line.split(',') 
     features[haircolor] = line 

hair = input("Does your character have black hair?") 
if hair == "yes": 
    for entry in features['Black hair']: 
     print 'Character could be {}'.format(entry) 

Может быть, в этот момент вы хотели бы задать еще один вопрос, с тем чтобы сократить оставшиеся элементы на основе какой-либо другой отличительной чертой. Вероятно, вы должны создать свой основной цикл как цикл над функциями, о которых вы хотите спросить, а не создавать длинную повторяющуюся программу, которая запрашивает одну функцию за раз. Когда вы остаетесь с одной записью, вы можете остановить цикл (или если вы закончите с нулевыми записями, вы не угадали).

Для чего это стоит, представление вашей функции кажется менее оптимальным, но поскольку вы не описываете его, это просто быстрое впечатление. (Вы могли бы получить более качественные ответы, если бы вы описали соответствующие части программы хотя бы ненадолго.)

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