2012-12-24 30 views
3

在Windows中:我想這個程序在命令行上運行。但是,我收到一個錯誤。我究竟做錯了什麼?在Python中的argv不能與Windows可執行文件cmdline

# create a method that append the letter stored in variable letter, ntimes. 

import sys 
def appender(letter,ntimes, sentence): 
    print sentence+(letter*ntimes) 


appender(str(sys.argv[1]),sys.argv[2], str(sys.argv[3])) 

下面是命令行中的錯誤,我得到的窗口

C:\Users\QamarAli\Documents\afaq's stuff>appender.py "F" 10 "Hello this is sent" 

Traceback (most recent call last): 
    File "C:\Users\QamarAli\Documents\afaq's stuff\appender.py", line 8, in <modul 
e> 
    appender(str(sys.argv[1]),sys.argv[2], str(sys.argv[3])) 
    File "C:\Users\QamarAli\Documents\afaq's stuff\appender.py", line 5, in append 
er 
    print sentence+(letter*ntimes) 
TypeError: can't multiply sequence by non-int of type 'str' 

C:\Users\QamarAli\Documents\afaq's stuff> 

回答

3

sys.argv的值都是字符串。您不需要將某些字符串轉換爲字符串,而需要將其他轉換爲您需要的任何非字符串類型。如果你想讓中間的那個是一個整數,請致電int

2

全部命令行參數被Python視爲字符串。

您的通話切換到

appender(sys.argv[1], int(sys.argv[2]), sys.argv[3]) 
5

錯誤是相當清楚的:

TypeError: can't multiply sequence by non-int of type 'str' 

你試圖通過一些不相乘的順序(在這種情況下,一個字符串)一個號碼。將您的參數爲整數:

appender(sys.argv[1], int(sys.argv[2]), sys.argv[3]) 

此外,sys.argv參數是默認字符串,所以沒有必要再次明確將它們轉換。

+0

謝謝,我的程序現在運行良好 –

相關問題