python中的argv无法使用windows可执行cmdline

时间:2012-12-24 00:07:12

标签: python argv

Windows中的

:我希望这个程序在命令行上运行。但是,我收到了一个错误。我做错了什么?

# 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]))

以下是我从Windows命令行获得的错误

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 个答案:

答案 0 :(得分: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参数默认为字符串,因此无需再次显式转换它们。

答案 1 :(得分:3)

sys.argv中的值都是字符串。您需要将其他转换为您需要的任何非字符串类型,而不是尝试将某些字符串转换为字符串。如果您希望中间的一个是整数,请在其上调用int

答案 2 :(得分:2)

所有命令行参数都被Python视为字符串。

将您的电话改为

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