[英]Too many values to unpack
我正在閱讀用難的方式學習python,在第15章中,我想使用import argv分配變量和原始輸入以獲得用戶輸入。 腳本是:
from sys import argv
script, filename, = argv
txt = open(filename)
print " Here's your file %r :" % filename
print txt.read()
print " I'll also ask you to type it again: "
file_again = raw_input ("> ")
txt_again = open (file_again)
print txt_again.read ()
運行此腳本后,出現錯誤,無法解包的值太多。
在腳本中,文件“ ex15.py”,第3行,文件名= argv
值錯誤:太多值無法解包
只是幾個指針...
from sys import argv
script, filename, = argv
在這里,您要導入argv以訪問命令行參數,然后期望它包含2個參數-腳本(arg 0)和要打印的文件名(arg1)。 盡管結尾的逗號在語法上並不是不正確的,但這不是必需的,並且看起來有點奇怪。 我通常將argv
保留在sys
而不是將其拉入當前的名稱空間中,但這是一個問題,它並沒有真正的區別。 我可能還會拋出一些錯誤處理:
import sys
try:
script, filename = sys.argv
except ValueError as e:
raise SystemExit('must supply single filename as argument')
txt = (filename)
print " Here's your file %r :" % filename
print txt.read()
txt = (name)
在這里所做的全部工作是使txt具有filename的值。 我相信您希望將txt
作為文件對象,以便可以從其中.read()
:
txt = open(filename)
print "Here's the file contents of:", filename
print txt.read()
print " I'll also ask you to type it again: "
file_again = raw_input ("> ")
txt_again = open (file_again)
print txt.again.read ()
您在這里有open()
,但是txt.again.read()
應該是txt_again.read()
否則會得到AttributeError
只需更改它就可以了。
另外,文件對象支持查找,因此您可以使用以下方法來rewind
文件(由於已將文件讀到末尾,因此不再需要讀取內容了)。
txt.seek(0)
print txt.read()
您如何運行腳本?
當你說,
script, filename = argv
您期望argv
有兩個項目。 第一個是腳本名稱,第二個是文件名。 如果您嘗試使用超過2個參數運行腳本,則會收到此類錯誤
python myscript.py myfile.py somethingelse
如果要向腳本傳遞另一個參數,則需要指定第三個變量以將值解壓縮到其中。 像這樣的東西
script, filename, option = argv
另外,如果您粘貼完整的回溯信息,將會有所幫助
確定,所以我發現我的問題是我沒有正確調用腳本。 例如,我的py腳本是ex15.py,該腳本將使用rw輸入和argv變量讀取文本。 且文件名是ex15_sample。 我用python ex15.py ex15_sample調用腳本,我對上一次練習感到困惑。 我在argv中使用設置的變量調用腳本的地方。 但是所有反饋都非常有幫助,我也申請了。
還有一個逗號
script, filename, = argv
它應該是
script, filename = argv
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.