2012-10-06 55 views
1

我正在閱讀學習python硬的方式, 和第15章我想使用導入 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
值誤差:值過多解壓

+0

*您如何運行腳本*? – nneonneo

+0

在通過power shell進行空閒時python filename.py腳本文件名 – user1724593

回答

-1

還有一個額外的逗號

script, filename, = argv 

它應該是

script, filename = argv 
+2

應該不重要:'a,b,= 3,4'在2.7中正常工作。請注意,與正常的Python元組語法一樣,尾隨逗號將被忽略。 ('a,= b',另一方面,不等於'a = b')。 – nneonneo

0

你是如何運行腳本的?

當你說,

script, filename = argv 

您在argv預計兩個項目。第一個是腳本名稱,第二個是文件名。如果您嘗試運行超過2個參數的腳本,然後你會得到這樣的錯誤

python myscript.py myfile.py somethingelse 

如果你想一個參數傳遞給腳本,那麼你需要指定第三個變量來解壓的價值成。像這樣

script, filename, option = argv 

此外,它會幫助,如果你粘貼完整回溯

+0

文件「ex15.py」,第3行,在 user1724593

+0

文件「ex15.py」,第3行,在腳本,文件名= argv值錯誤:解包太多值 – user1724593

2

只是一對夫婦的指針...

from sys import argv 

script, filename, = argv 

在這裏,你要導入的argv訪問命令行參數,然後期望它包含2個參數 - script(arg 0)和要打印的文件名(arg1)。儘管尾隨的逗號不是合成不正確的,但它不是必需的,只是看起來有點奇怪。我在sys的內部正式離開argv,而不是將它拉入當前的命名空間,但這是一個有趣的問題 - 它沒有真正的區別。我可能會扔在一個比特的錯誤處理,以及:

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文件名具有的價值。我相信你想被製作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() 
0

O.K.所以我發現我的問題 我沒有正確調用我的腳本。 例如我的py腳本是ex15.py與 腳本,它將使用rw輸入和argv 變量讀取文本。這個文件名是 ex15_sample。我用python ex15.py ex15_sample調用腳本,我對我最後一次練習感到困惑。我在哪裏使用了我在argv中設置的變量來調用腳本。但所有的反饋都是非常有幫助的,我也申請了 。

相關問題