使用sys.argv实现命令行参数?

时间:2014-10-27 20:03:55

标签: python command argv

我对程序中命令行参数的正确实现感到困惑。我环顾四周,很困惑是否需要for循环。我确信这个程序总会传递两个参数。最终,在这种情况下需要一个for循环吗?这是主函数中的代码:

def main():
try:
    if len(sys.argv) > 1:
        filename = sys.argv[1]
        length = int(sys.argv[2])
    wordDict = readFile(filename)
except IOError:
    print("Error: file not found.")

谢谢大家的投入!

2 个答案:

答案 0 :(得分:2)

你可以试试argparse: https://docs.python.org/2/library/argparse.html

import argparse


parser = argparse.ArgumentParser(description='What ever the purpose of the script is')

parser.add_argument('filename', type=str,
                   help='path to the file')

parser.add_argument('length', type=int,
                   help='some length')

args = parser.parse_args()
print args.filename
print args.length

答案 1 :(得分:2)

如果你确切知道你想要多少个参数,你就不需要使用循环。

我注意到在您的代码中检查sys.argv的数量是否大于1,您需要检查它是否大于2,因为第一个sys.argv(sys.argv [0])是您正在运行的名称脚本https://docs.python.org/3/library/sys.html?highlight=sys.argv#sys.argv

如果只有一个参数传递给你的程序,它将导致一个IndexError。