python实现wc命令(一)

来源:互联网 发布:ubuntu启动顺序 编辑:程序博客网 时间:2024/06/06 11:47

wc这个命令可以实现对文件行数、单词数、字节数等的统计。

[root@js python]# wchellogood morning      2       3      20[root@js python]# wc /etc/passwd  32   52 1530 /etc/passwd

下面写一个吧简单的程序来实现这个功能。
程序一:
通过标准输入来获取内容并统计:

[root@js python]# cat wc2.py#!/usr/bin/env pythonimport sysdata = sys.stdin.read()lines  = data.count('\n')words = len(data.split())chars = len(data)print "%(lines)s %(words)s %(chars)s" %locals()

执行:

[root@js python]# python wc2.pyhelloworld i am2 4 18          

程序二:
通过参数形式获取文件:

[root@js python]# cat argv2.py#!/usr/bin/pythonimport sysimport ostry:    fn = sys.argv[1]except IndexError:    print "please follow a argument after %s" %__file__    sys.exit()if not os.path.exists(fn):    print " %s is not exists" %fn    sys.exit()with open(fn) as fd:    data = fd.read()    lines = data.count('\n')    words = len(data.split())    chars = len(data)print "%(lines)s %(words)s %(chars)s" %locals()

执行:

[root@js python]# python argv2.py /etc/hosts2 10 158[root@js python]# python argv2.py /etc/fadjsfd /etc/fadjsfd is not exists

程序三:
既可以通过标准输入来获取内容并统计,又可以通过参数形式获取文件:

[root@js python]# cat hb2.py#!/usr/bin/env pythonimport sysimport osif len(sys.argv) == 1:    data = sys.stdin.read()else:    try:        fn = sys.argv[1]    except IndexError:        print "please follow a argument after %s" %__file__        sys.exit()    if not os.path.exists(fn):        print "%s is not exists" %fn        sys.exit()    with open(fn) as fd:        data = fd.read()lines = data.count('\n')words = len(data.split())chars = len(data)print "%(lines)s %(words)s %(chars)s" %locals()

执行:
1、通过标准输入来获取内容

[root@js python]# python hb2.pywhere arreyou2 3 16

2、通过参数形式获取文件

[root@js python]# python hb2.py /etc/passwd32 52 1530[root@js python]# python hb2.py /etc/231wdas/etc/231wdas is not exists

到此为止 ,实现了wc的统计lines,words,chars功能。

原创粉丝点击