我在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:我如何添加和访问命令行参数?
答案 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
的差异。结果是单词之间的空格丢失,字母数相同。