python使用optparse模块实现wc命令(二)
来源:互联网 发布:linux rc.local 日志 编辑:程序博客网 时间:2024/06/05 09:51
这是继上一篇的wc命令升级版,使用了optparse模块,可以带参数-l,-w,-c,下面是wc命令实现的效果:
[root@js python]# wc /etc/passwd 32 52 1530 /etc/passwd[root@js python]# wc -l /etc/passwd32 /etc/passwd[root@js python]# wc -w /etc/passwd52 /etc/passwd[root@js python]# wc -c /etc/passwd1530 /etc/passwd
下面是用python编写的程序:
[root@js python]# cat parse4.py#!/usr/bin/pythonimport sysimport osfrom optparse import OptionParserdef 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") options,args = parser.parse_args() return options,argsdef get_count(data): chars = len(data) words = len(data.split()) lines = data.count('\n') return lines,words,charsdef print_wc(options,lines,words,chars,fn): if options.lines: print lines, if options.words: print words, if options.chars: print chars, print fndef 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,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\n" %fn else: sys.stderr.write("wc: %s No such file or directory\n" %fn) if len(args) > 1: 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()
简单测试一下:
[root@js python]# python parse4.py /etc/passwd32 52 1530 /etc/passwd[root@js python]# python parse4.py -l /etc/passwd 32 /etc/passwd[root@js python]# python parse4.py -wcl /etc/passwd32 52 1530 /etc/passwd[root@js python]# python parse4.py -wcl /etc/passwd /etc/hosts32 52 1530 /etc/passwd2 10 158 /etc/hosts34 62 1688 total[root@js python]# python parse4.py /etc/passwd /etc/hosts32 52 1530 /etc/passwd2 10 158 /etc/hosts34 62 1688 total[root@js python]# cat /etc/passwd |python parse4.py 32 52 1530
基本实现了wc的功能,结束。
阅读全文
0 0
- python使用optparse模块实现wc命令(二)
- python optparse命令解析模块
- Python之命令解析模块optparse
- Python中optparse模块使用浅析
- Python中optparse模块使用学习
- Python optparse模块
- python模块学习---optparse
- 【python】optparse 模块
- python optparse模块
- Python模块optparse
- Python optparse模块
- Python中的optparse模块
- Python--模块之optparse
- Python命令行工具开发之二:使用optparse模块编写命令行工具
- python实现wc命令(一)
- python中optparse模块用法
- Python 中 optparse模块简介
- Python模块学习——optparse (详细)
- uikit——Auto Layout——layout margin
- std::cout 与 cout 有什么区别 // cout有些时候为什么前面要加std
- 通配符选择器子元素选择器后代选择器
- 关于umask,perror,strerror和如何输出有颜色字
- 质因数分解
- python使用optparse模块实现wc命令(二)
- uikit——Auto Layout——Readable Content Guide
- Linux中chmod指令的实现
- LeetCode#20 Valid Parentheses
- SetCursorPos的用法
- 7.17问题 1083: Hello, world!
- 等概率无重复的从n个数中选取m个数
- POJ 2456
- luogu1314 聪明的质监员