使用 python 实现 wc 命令程序的基本功能
发布时间:2021-07-06 06:09:43 所属栏目:大数据 来源: https://www.jb51.cc
导读:这里使用了 python 的基本代码实现了 Linux 系统下 wc 命令程序的基本功能。 ? #!/usr/bin/env python#encoding: utf-8# Author: liwei# Function: wc program by pythonfrom optparse import OptionParserimport sys,osdef opt(): parser = OptionParser()
这里使用了 python 的基本代码实现了 Linux 系统下 wc 命令程序的基本功能。 ? #!/usr/bin/env python #encoding: utf-8 # Author: liwei # Function: wc program by python 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',help='only count words') parser.add_option('-l','--line',dest='lines',help='only count lines') parser.add_option('-n','--nototal',dest='nototal',help='don't print total information') options,args = parser.parse_args() return options,args #print options def 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 options def print_wc(options,lines,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 for fn in args: if os.path.isfile(fn): with open(fn) as fd: data = fd.read() lines,chars = get_count(data) print_wc(options,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 directoryn' % fn) # 只有多个文件的时候会计算出total字段 if len(args) > 1 and not options.nototal: print_wc(options,total_lines,total_chars,'total') else: fn = '' data = sys.stdin.read() lines,chars = get_count(data) print_wc(options,fn) if __name__ == '__main__': main()
(编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |