python版WC

#!/usr/bin/env python
#coding:utf8
from optparse import OptionParser
import sys,os
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","--no-total",
                      dest="nototal",
                      action="store_true",
                      default=False,
                      help="no total")
    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.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" %fn
            else:
                sys.stderr.write("%s: No such file or direcotry\n" %fn)
        if len(args) > 1 and 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)
if __name__ == ‘__main__‘:
    main()
时间: 2024-10-13 21:27:01

python版WC的相关文章

逐步实现python版wc命令

Python 如何处理管道输入输出 sys.stdin 等于打开了一个文件对象,所有输入的文件都会写入到标准输入文件中(键盘) sys.stdout 等于打来了一个文件对象,使用.write()把信息写入到标准输出文件中(屏幕) 判断行数: 1 #!/usr/bin/env python 2 #_*_ coding:UTF-8 _*_ 3 4 import sys 5 6 #遍历文件对象,并统计行数 7 def lineCount(f): 8 n = 0 9 for i in f: 10 n +

python之simplejson,Python版的简单、 快速、 可扩展 JSON 编码器/解码器

python之simplejson,Python版的简单. 快速. 可扩展 JSON 编码器/解码器 simplejson Python版的简单. 快速. 可扩展 JSON 编码器/解码器 编码基本的 Python 对象层次结构: import simplejson as json print json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}]) print json.dumps("\"foo\bar") print json

微信支付SDK(python版)

最近一段时间一直在搞微信平台开发,最近的v3.37版本微信支付接口变化贼大,所以就看着php的demo移植为 python版,为了保持一致,所以接口方法基本都没有变,这样的好处就是不用写demo了,看着微信官方的demo 照葫芦画瓢就可以了. 我已经把代码放到github了,https://github.com/Skycrab/wzhifuSDK,我主要测试了JsApi调用方式,其它的调用方式并没有测试,如果你发现了bug,请多多pull request,我将不甚感激. 方便观看,代码贴于此.

编码的秘密(python版)

编码(python版) 最近在学习python的过程中,被不同的编码搞得有点晕,于是看了前人的留下的文档,加上自己的理解,准备写下来,分享给正在为编码苦苦了挣扎的你. 编码的概念 编码就是将信息从一种格式转换成另一种格式,计算机只认识二进制,简单的理解,将我们眼睛看到的文字转换为计算机能够识别的二进制格式视为编码,而二进制以某种编码格式转换为我们能看的文字的过程可以看成是解码.既然计算机只能认识二进制0,1,那么我们用的字母.数字和文字等是怎样和他们对应的呢?那就请继续看吧! python中查看

python 版 quicksort 快排

今天看了下苹果xml 解析,写了个小demo 心想还是 在博客上写点东西吧,毕竟很久很久都没有上来了 先上个效果图把 接下来 看下 工程目录图吧 本demo 分两种解析模式,一是苹果自带的, 首先先看下苹果自带的吧,工程文件为 NoteXMLParser 文件 ,另一种解析模式 是 NotesTBXMLParser文件 NoteXMLParser.h 文件代码如下 : // // NoteXMLParser.h // TestXML // // Created by choni on 14-5-

人脸验证算法Joint Bayesian详解及实现(Python版)

人脸验证算法Joint Bayesian详解及实现(Python版) Tags: JointBayesian DeepLearning Python 本博客仅为作者记录笔记之用,不免有很多细节不对之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如对代码有兴趣的请移步我的 Github. 如需转载,请附上本文链接,不甚感激!  http://blog.csdn.net/cyh_24/article/details/49059475 Bayesian Face Revis

使用webdriver打开本地浏览器--python版

背景:经常性的,在项目中我们需要打开不同配置的不同浏览器.在学习selenium的过程中,打开本地火狐和本地chrome是一个稍微麻烦的事情,网上的java版本资料很多,但是python版的不多,在这里,我研究了一份关于python版Selenium打开浏览器的文档,供自己备注,也希望给大家一些参考. 1.打开默认的火狐 browser = webdriver.Firefox() 2.打开本地配置的火狐 from selenium import webdriver from time impor

LAMP一键安装(Python版)

去年有出一个python整的LAMP自动安装,不过比较傻,直接调用的yum 去安装了XXX...不过这次一样有用shell..我也想如何不调用shell 来弄一个LAMP自动安装部署啥啥的..不过尼玛智商有限,没搞定,暂且分享一下 先说说目前的缺陷     这个脚本总体来说是调用一个字典,组成这个字典是最花费时间的,实际代码到是没几行,本来想把Nginx 的部署也加进去,什么memcached phpmyadmin apc 这样的常用组件作为功能加进去,尼玛,时间不够,只能打打酱油,包括最后我也

python版的短信轰炸机smsbomb----------上篇(post)

短信轰炸机的原理是利用一些用手机号注册且需要发送验证码的网站的漏洞,可以向任何人的手机号发送短信,当然短信内容,我们无法控制.所以主要工作还是寻找这样的网站,然后利用Fiddler或者HttpWatch分析请求,使用post还是get,数据格式是怎么样的等. 以http://topic.hongxiu.com/wap/为例: 然后随便填一个电话号码,进行抓包分析: 通过这个可以看出,请求方式是POST,点击webForms就可以看到发送的数据格式. 有了这些就很简单了,核心就是向服务器post数