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

时间:2013-07-04 02:50:38

标签: python windows python-2.7 command-line cmd

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

编写一个程序,该程序在命令行中读取字符串,并返回字符串中出现的字母表,其中包含每个字母出现的次数。例如:

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

例如,如果您的命令行输入为python myfile.py a b c,则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 a b c
['testcode.py', 'a', 'b', 'c']

答案 1 :(得分:0)

你可以按照以下方式做点什么:

#!/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."打印时调用:

['./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的差异。结果是单词之间的空格丢失,字母数相同。