加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用 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()

  

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读