码迷,mamicode.com
首页 > 编程语言 > 详细

Python:完整版 wc

时间:2016-05-26 06:28:39      阅读:540      评论:0      收藏:0      [点我收藏+]

标签:python   wc   


此 Python 脚本基本上实现了 Linux 系统里 wc 命令的全部功能

vim wc.py

#!/usr/bin/python


import os

import sys

from optparse import OptionParser


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",

                     action="store_true",

                     default=False,

                     help="only count words")

    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="show total or not")

    options, args = parser.parse_args()

    return options, args


def get_count(data):

    chars = len(data)

    words = len(data.split())

    lines = data.count(‘\n‘)

    return lines, words, chars


def print_wc(options, lines, words, 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.lines, 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)

        if len(args) > 1:

            if not options.nototal:

                print_wc(options, total_lines, total_words, total_chars, ‘total‘)

    else:

        data = sys.stdin.read()

        fn = ‘‘

        lines, words, chars = get_count(data)

        print_wc(options, lines, words, chars, fn)


main()


本文出自 “M四月天” 博客,请务必保留此出处http://msiyuetian.blog.51cto.com/8637744/1783267

Python:完整版 wc

标签:python   wc   

原文地址:http://msiyuetian.blog.51cto.com/8637744/1783267

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!