命令行参数的基础知识,Python

我在Windows 7中使用Python2.7.5。我是新的命令行参数。 我正在尝试做这个练习:

编写一个程序,在命令行中读入一个string,并返回string中出现的每个字母出现的次数。 例如:

$ python letter_counts.py "ThiS is String with Upper and lower case Letters." a 2 c 1 d 1 # etc. 

我知道如何将命令行参数添加到文件名并将其输出到cmd(Windows命令提示符)中的列表中。 不过,我想学习如何在Python脚本中使用命令行参数 – 因为我需要添加/访问附加的命令行参数,并创build一个循环来计算它们的字母。

在cmd之外,我目前只有letter_counts.py作为文件名 – 这只是一个命令行参数。

在python中不是cmd:如何添加和访问命令行参数?

你想使用sys模块的sys.argv列表。 它允许您访问在命令行中传递的参数。

例如,如果你的命令行输入是python myfile.py abc ,则sys.argv[0]是myfile.py, sys.argv[1]是a, sys.argv[2]是b, sys.argv[3]是c。

一个运行的例子( testcode.py ):

 if __name__ == "__main__": import sys print sys.argv 

然后,运行(在命令行中):

 D:\some_path>python testcode.py abc ['testcode.py', 'a', 'b', 'c'] 

你可以按照这些方法做一些事情:

 #!/usr/bin/python import sys print sys.argv counts={} for st in sys.argv[1:]: for c in st: counts.setdefault(c.lower(),0) counts[c.lower()]+=1 for k,v in sorted(counts.items(), key=lambda t: t[1], reverse=True): print "'{}' {}".format(k,v) 

当用python letter_counts.py "ThiS is String with Upper and lower case Letters."调用python letter_counts.py "ThiS is String with Upper and lower case Letters." 打印:

 ['./letter_counts.py', 'ThiS is String with Upper and lower case Letters.'] ' ' 8 'e' 5 's' 5 't' 5 'i' 4 'r' 4 'a' 2 'h' 2 'l' 2 'n' 2 'p' 2 'w' 2 'c' 1 'd' 1 'g' 1 'o' 1 'u' 1 '.' 1 

如果你不使用引号,像这样: python letter_counts.py ThiS is String with Upper and lower case Letters. 它打印:

 ['./letter_counts.py', 'ThiS', 'is', 'String', 'with', 'Upper', 'and', 'lower', 'case', 'Letters.'] 'e' 5 's' 5 't' 5 'i' 4 'r' 4 'a' 2 'h' 2 'l' 2 'n' 2 'p' 2 'w' 2 'c' 1 'd' 1 'g' 1 'o' 1 'u' 1 '.' 1 

请注意输出顶部sys.argv列表中的差异。 结果是单词之间的空白丢失,并且字母计数是相同的。