#!/usr/bin/pythonimport sysimport osfrom optparse import OptionParser def opt(): parser = OptionParser() parser.add_option("-c", "--char", dest="chars", action="store_true", default=False, help="only count chars") parser.add_option("-w", "--work", 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="total", action="store_true", default=False, help="only count 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: file = 0 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 file += 1 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 file > 1 and not options.total: 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()
[root@dns ~]# python wc100.py -wcl 1.txt data.sql nginx.sh //具体用法 -w 统计 单词数 -c 统计字数 -l统计行数 -n取消总统计量
[root@dns ~]# wc -wcl 1.txt data.sql nginx.sh