Python:完整版 wc,,此 Python 脚



此 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

评论关闭