2014-12-07 36 views
-1

我正在使用「Learn Python the Hard Way」並使用PyScripter編寫和運行我的代碼。PyScripter - 導入argv錯誤

鍛鍊13我必須做出以下代碼運行:

from sys import argv 


script, first, second, third = argv 

print "The script is called:", script 
print "Your first variable is:", first 
print "Your second variable is:", second 
print "Your third variable is:", third 

當我運行它,我得到一個錯誤說

ValueError: need more than 1 value to unpack 

我讀過關於同一主題的其他問題和似乎無法找到有效的答案。

我對編碼也很新穎,所以解釋如何做到這一點很棒!

回答

0

只有當您通過時,您的腳本纔會正常工作三個命令行參數。例如:

script.py 1 2 3 

不能使用任何其他數量的命令行參數要不然ValueError將提高。

也許您應該通過檢查您接收到的參數數量,然後適當地分配名稱first,secondthird來使腳本更健壯。

下面是一個演示:

from sys import argv, exit 

argc = len(argv) # Get the number of commandline arguments 

if argc == 4: 
    # There were 3 commandline arguments 
    script, first, second, third = argv 
elif argc == 3: 
    # There were only 2 commandline arguments 
    script, first, second = argv 
    third = '3rd' 
elif argc == 2: 
    # There was only 1 commandline argument 
    script, first = argv 
    second = '2nd' 
    third = '3rd' 
elif argc == 1: 
    # There was no commandline arguments 
    script = argv[0] 
    first = '1st' 
    second = '2nd' 
    third = '3rd' 
else: 
    print "Too many commandline arguments" 
    exit(1) 

print "The script is called:", script 
print "Your first variable is:", first 
print "Your second variable is:", second 
print "Your third variable is:", third 

當然,這僅僅是一個例子。你可以在if語句中做任何你想要的事情(把名字分配給不同的東西,引發異常,打印消息,退出腳本等)。這裏的重要部分是argc = len(argv)行和if語句,它們檢查腳本接收到多少個參數。

+0

好了,我說你把這裏,但輸出應該說, 「劇本被稱爲:(只要它被保存) ‘你的第一個變量是:第一’ ‘你的第二個變量是:第二屆’ 「你的第三個變量是:第三屆」 ,但我得到 腳本被稱爲:C:\用戶\賈斯汀\桌面\ Python的\練習\ module13.py 你的第一個變量是:無 你的第二個變量是:沒有 你的第三個變量是:無 – 2014-12-07 21:09:42

+0

好吧,就像我說的,這只是一個例子,你可以在if語句中做任何你想做的事情,但是看看我的編輯。在製作名稱爲None時,它現在將它們分配給字符串。 – iCodez 2014-12-07 21:15:23