Lỗi "ValueError: need more than 1 value to unpack" khi chạy code Python

Lỗi này khi em run code, copy code mà nó bảo thiếu thư viện hay sao ạ?

  • Khi hỏi các vấn đề liên quan đến code, bạn phải đưa code lên thì mọi người mới giúp được
  • Nhìn lỗi, có vẻ như bạn quên không truyền tham số vào, ví dụ
    python ReadingFile text.txt
1 Like

em copy code của trang leaning python ạ

from sys import argv

script, filename = argv

print "We're going to erase %r." % filename
print "If you don't want that, hit CTRL-C (^C)."
print "If you do want that, hit RETURN."

raw_input("?")

print "Opening the file..."
target = open(filename, 'w')

print "Truncating the file.  Goodbye!"
target.truncate()

print "Now I'm going to ask you for three lines."

line1 = raw_input("line 1: ")
line2 = raw_input("line 2: ")
line3 = raw_input("line 3: ")

print "I'm going to write these to the file."

target.write(line1)
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")

print "And finally, we close it."
target.close()

tại vì có thể truyền tên file rồi đọc, nên không truyền tham số file ạ. Do lỗi gì ấy ạ!!!

Như mình bảo, chạy thử lệnh bên dưới

1 Like

lỗi được thông báo trên màn hình:

script, filename = argv
need more than 1 value to unpack

Câu lệnh trên cần argv là 1 tuple có 2 items, thì mới gán với 2 biến bên trái được.
bạn thử chạy 1 script như này: script, filename = 1 sẽ báo lỗi tương tự
còn script, filename = 1, 2 sẽ không báo lỗi

Cách post code lên diễn đàn: thêm dấu ` vào trước và sau code để nhìn cho đẹp nhé.
ví dụ `code` sẽ ra code
hoặc có thể dùng 2 dấu nháy, 3 dấu nháy (nhiều dòng)

1 Like

OK, thank ạ, tại hôm xem hướng dẫn rồi, ít đăng lại quên ạ…Cảm ơn ạ!!!

sửa =1,2 như anh thì chạy được, nhưng e không hiểu ạ, tại sao lại 1,2 ạ?

Bạn đang học theo learnpythonthehardway, mình nghĩ bạn nên thực hành theo hướng dẫn, lỗi của bạn là khi chạy chương trình bạn quên chưa đưa tham số vào như hướng dẫn:

python .\ex16.py test.txt

Đây là lúc mình thử

1 Like

Đấy là mình ví dụ cho bạn thôi.
Trong python thì phép gán giá trị biến có thể được viết linh hoạt như vậy.
Các ngôn ngữ khác bạn chỉ gán được 1 biến 1 lệnh, nhưng python thì có thể gán nhiều biến.
Khi gán thì số lượng biến ở 2 vế trái phải bằng số lượng giá trị ở vế phải
need more than 1 value to unpack dịch là cần hơn 1 giá trị để gán
Chịu khó dùng cả google translate nhé :smiley:

ok cảm ơn anh ạ!.. Em đã hiểu

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?