Use python to implement the basic functions of the wc command program.
The basic python code is used to implement the basic functions of the wc command program in Linux.
#! /Usr/bin/env python # encoding: UTF-8 # Author: liwei # Function: wc program by pythonfrom optparse import OptionParserimport sys, osdef 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 = 'word', action = 'store _ true', default = False, help = 'only count word') parser. add_option ('-l',' -- line', dest = 'lines', action = 'store _ true', default = False, help = 'only count lines') parser. add_option ('-n',' -- nototal', dest = 'nototal', action = 'store _ true', default = False, help = 'Don \'t print total information') options, args = parser. parse_args () return options, args # print optionsdef get_count (data): chars = len (data) words = len (data. split () lines = data. count ('\ n') return lines, words, chars # if not options. chars and not options. words and not optionsdef print_wc (options, lines, words, chars, fn): if options. lines: print lines, if options. words: print words, if options. chars: print chars, print fndef 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 directory \ n' % fn) # calculate the total field if len (args)> 1 and not options when there are only multiple files. nototal: print_wc (options, total_lines, total_words, total_chars, 'Total') else: fn = 'data = sys. stdin. read () lines, words, chars = get_count (data) print_wc (options, lines, words, chars, fn) if _ name _ = '_ main _': main ()