使用Python实现Linux系统wc命令,效果一样
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Python实现Linux系统wc命令,效果一样相关的知识,希望对你有一定的参考价值。
代码如下:
#!/usr/bin/python #*-*coding:utf8*-* import sys import os from optparse import OptionParser """定义参数""" parser = OptionParser() parser.add_option("-l", "--line", dest="lines", action="store_true", default=False, help="only count lines") parser.add_option("-w", "--word", dest="words", action="store_true", default=False, help="only count words") parser.add_option("-c", "--char", dest="chars", action="store_true", default=False, help="only count chars") parser.add_option("-n", "--nototal", dest="nototal", action="store_true", default=False, help="no count total") options, args = parser.parse_args() """根据指定不同选项显示不同的值""" def display(l, w, c): global total_l total_l += l global total_w total_w += w global total_c total_c += c if not (options.words or options.chars or options.lines): print(l), print(w), print(c), if options.lines: print(l), if options.words: print(w), if options.chars: print(c), """针对文件特殊处理,如果是1个文件以上那么需要输入一个Total总和""" def dir(data): if not os.path.exists(data): sys.stderr.write("%s No such file or directory\n" %data) return False if os.path.isdir(data): sys.stderr.write("%s Is a directory\n" %data) return False return True def readFile(data): for f in data: b = dir(f) if b: with open(f) as files: fd = files.read() l = fd.count("\n") w = len(fd.split()) c = len(fd) display(l, w, c) print(f) else: continue if (len(args) > 1) and (not options.nototal): l = total_l w = total_w c = total_c display(l, w, c) print("Total") total_l = 0 total_w = 0 total_c = 0 if len(args) == 0: data = sys.stdin.read() l = data.count("\n") w = len(data.split()) c = len(data) display(l, w, c) else: data = args readFile(data)
执行结果如下:
以上是关于使用Python实现Linux系统wc命令,效果一样的主要内容,如果未能解决你的问题,请参考以下文章