簡體   English   中英

太多價值無法解包

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM