使用 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()
(编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
