from optparse import OptionParser
import sys,os
def command_line():
parser = OptionParser("%prog [-s] file_name")
parser.add_option("-s",dest="filename",
metavar="file_name",help="my help message")
options, args = parser.parse_args()
if not options.filename:
parser.print_help()
sys.exit()
return options.filename
def read_file(fn):
if os.path.isfile(fn):
typecount = {}
with open(fn) as f:
for line in f:
for i in line.split()
try:
t = type(eval(i))
except NameError:
t = type(i)
if t in typecount:
typecount[t] += 1
else:
typecount[t] = 1
else:
print( "Unable to open {}".format(fn))
sys.exit()
print(typecount)
read_file(command_line())
所以一步一步地:除非定义选项a或(最好)setdest="a",否则不会定义options.a。在
使用内置的parser.print_help()比自己做更好,那么你可以免费得到-h/help。在
您从未调用过函数command_line,因此没有得到任何错误,因为语法是正确的。我将命令行设置为只传递文件名作为返回值,但是当您有更多的选项/参数时,还有更好的方法来执行此操作。在
对于read_file,我建议使用os.path.isfile来检查文件是否存在,而不是使用try。但这不会检查文件是否具有正确的格式。在
然后我们创建一个类型字典,然后遍历所有行并计算由空格(空格、换行符、制表符)分隔的对象。如果您的值用逗号分隔,则需要使用line.split(',')。在
如果以后要在脚本中使用计数,则可能需要返回typecount,而不是打印它。在