#!/usr/bin/env python #coding:utf8 from optparse import OptionParser import sys,os def opt(): parser = OptionParser() parser.add_option("-c","--char", dest="chars", action="store_true", default=False, help="only count chars") parser.add_option("-w","--word", dest="words", action="store_true", default=False, help="only count words") parser.add_option("-l","--line", dest="lines", action="store_true", default=False, help="only count lines") parser.add_option("-n","--no-total", dest="nototal", action="store_true", default=False, help="no total") options,args = parser.parse_args() return options,args '''参数模块''' def get_count(data): chars = len(data) words = len(data.split()) lines = data.count('\n') return lines,words,chars '''统计模块''' def print_wc(options,lines,words,chars,fn): if options.lines: print lines, if options.words: print words, if options.chars: print chars, print fn '''判断参数''' def main(): options,args = opt() if not (options.lines or options.words or options.chars): options.lines , options.words , options.chars = True,True,True '''判断有没有参数,若没加参数,则输出所有参数''' if args: total_lines,total_words,total_chars = 0,0,0 for fn in args: if os.path.isfile(fn): with open(fn) as fd: data = fd.read() lines,words,chars = get_count(data) print_wc(options,lines,words,chars,fn) total_lines += lines total_words += words total_chars += chars elif os.path.isdir(fn): print >> sys.stderr,"%s: is a directory" %fn else: sys.stderr.write("%s: No such file or direcotry\n" %fn) if len(args) > 1 and not options.nototal: print_wc(options,total_lines,total_words,total_chars,'total') else: data = sys.stdin.read() fn = " " lines,words,chars = get_count(data) print_wc(options,lines,words,chars,fn) if __name__ == '__main__': main()
http://www.laomaotao.net/?D3103