2014-10-14 6 views
0

Для кода ниже, я всегда получаю сообщение об ошибке ValueError: need more than 1 value to unpack. он читается с txt file с 5 различными строками контента, поэтому определенно он имеет более 1 строки.ValueError с распаковкой в ​​python

with open("People.txt", 'r') as inFile: 
    for line in inFile: 
     ip,user,password = line.strip().split(',') 

Текстовый файл выглядит следующим образом:

ip,username,password 
+0

вы, вероятно, разделив более 3 значения, какая версия питона это? –

+5

Есть ли пустые строки в файле? Что произойдет, если вы напечатаете line.strip(). Split (',') '? – jonrsharpe

+1

Предложите вам проверить, что именно line.strip(). Фактически возвращается split (',') – mdurant

ответ

-3

Может у вас есть символ новой строки в конце файла. Вы могли бы сделать это более надежным, например, таким образом.

with open("People.txt", 'r') as inFile: 
    for line in inFile: 
     if line.count(',') == 2: 
      ip,user,password = line.strip().split(',') 
0

Ответил @parchment в комментариях here.

Тогда пустая строка является проблемой. Вы должны добавить чек для пустых строк . - пергаментной

Sample полезный рецепт:

In [17]: with open("src.txt") as f: 
    ...:  for f_ in f: 
    ...:   if f_.strip(): # One quick way to check for blank lines. 
    ...:    one_,two_ = f_.strip().split(",") 
    ...:    print one_, two_ 
foo bar 
spam grok 

In [18]: 
+0

Я думаю, что мой более надежный. Потому что мы разделены на запятые и распаковываем как минимум три значения. В вашем случае распаковка завершится неудачно, если входные данные не удовлетворяют. – wenzul

+0

Речь идет не о том, не соответствует ли вышеприведенный вход. Ключевым здесь является использование 'f.strip()' для идентификации пустых строк. Какая бы ни была возможная форма ввода или как пользователь имеет дело с ней, является частью его подхода, который в любом случае не является подробным в OP. Нет четкой информации о том, что это меньше, чем 2 запятых в строке, и нет больше возможностей. Также обратите внимание, что это было опубликовано как вики сообщества. В любом случае, это не касается точек *. – Manhattan

+0

Достаточно честный. Не видел и вики-запись. – wenzul

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