iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >用python 实现linux 的wc
  • 806
分享到

用python 实现linux 的wc

pythonlinuxwc 2023-01-31 05:01:52 806人浏览 薄情痞子
摘要

#!/usr/bin/env python """file name: opt_wc.py"""   import os import sys from optparse import OptionParser   def opt():

#!/usr/bin/env python

"""file name: opt_wc.py"""
 
import os
import sys
from optparse import OptionParser
 
def opt():
    parser = OptionParser()
 
    parser.add_option("-c", "--chars",
                      dest = "chars",
                      action = "store_true",
                      default = False,
                      help = "only count chars.")
    parser.add_option("-w", "--Words",
                      dest = "words",
                      action = "store_true",
                      default = False,
                      help = "only count words.")
    parser.add_option("-l", "--lines",
                      dest = "lines",
                      action = "store_true",
                      default = False,
                      help = "only count lines.")
    parser.add_option("-n", "--nototal",
                                           dest = "nototal",
                                           action = "store_true",
                                           default = False,
                                           help = "not print total count.")
    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.chars or options.words or options.lines):
        options.chars, options.words, options.lines = 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.total:
                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()


主要利用了optparse 里的OptionParser 模块,自定义选项。在这里,只定义了-l,-c,-w 三种命令,对应wc 命令的-l,-w,-c 三个命令,分别是统计行数,单词数和字符数。通过OptionParser 模块自定义的命令,Python 版本的wc 命令也可以达到linux 命令wc 的效果。


optparse用法详解:

    1. 创建OptionParser 对象,如 parser = OptionParser()

    2. 调用parser 对象的add_option() 方法,自定义选项:

    parser.add_option("-c", 

            "--chars",

            dest = "chars",

            action = "store_true",

            default = False,

            help = "only count chars.")

    "-c"和"--chars"相当于短命令和长命令的区别。

   dest 对象存储的值。

   action 当解释到命令时会如何保存。一般有默认的三种情况,"store"、"store_true"、"stor_false":

   当是"store"时,如果命令后还有值时,会将它保存在dest 声明的那个存储变量,例如<your_script> -c  /etc/hosts; 则将"/etc/hosts"保存在chars 里。

   当是"store_true"时,如果解释到-c 命令,则'chars' : True;

   当是"store_false"时,如果解释到-c 命令,则'chars' : False;

     

   default: action参数的默认取值

   help: 相当于帮助信息


   3. 当所有需要自定义的命令都已经准备好了,就可以调用parser.parse_args() 方法,这个方法返回两个值,options 和args 。

   options 是一个字典dict的形式,这个字典的key 都是以上自定义的命令的dest值。例如,在这个例子里自定义了-c,-w,-l 三种命令选项,它们的action 都是"store_True",当输入有某一个命令时,它对应的存储变量的值就是True , 所以当以这种方式  python  opt_wc.py  -c 执行脚本的时候,就会获取到options 的值:['chars': True, 'words': Flase, 'lines': False].通过这个字典,就可以知道脚本要处理的命令是哪些了。


  parser.parse_args()方法返回的第二个变量是args, 它是一个列表list,保存了命令行里除了-c,-l和--chars,--lines 这种短命令和长命令以外的参数值。例如命令行 python opt_wc.py  -l /etc/hosts /etc/passwd ,那么args = ['/etc/hosts', '/etc/passwd'], 通过parse_args()方法返回的args 就可以知道脚本需要处理的文件。


扩展选项-n ,--nototal, 当在命令行输入-n 选项时,不再输出总数的统计。


python 脚本运行效果:


默认统计行数、字符数、单词数:

wKiom1f6VefgDIfEAAAmOr8Iq0E853.png-wh_50


统计两个文件:

wKioL1f6VejQc8yBAABAj4XmF-k892.png-wh_50


只统计行数:

wKiom1f6VeiDi598AAA5bfe8KlM311.png-wh_50


输出错误处理:

wKioL1f6VemyQQc0AAAp2Vyozug153.png-wh_50


--结束END--

本文标题: 用python 实现linux 的wc

本文链接: https://www.lsjlt.com/news/189074.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 用python 实现linux 的wc
    #!/usr/bin/env python """file name: opt_wc.py"""   import os import sys from optparse import OptionParser   def opt(): ...
    99+
    2023-01-31
    python linux wc
  • Linux系统wc命令怎么用
    这篇文章给大家分享的是有关Linux系统wc命令怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linux系统中wc(world count)是一个统计文件字词,字节,行数的命令,它可以帮我们非常方便的统计以...
    99+
    2023-06-28
  • Linux中wc命令怎么用
    这篇文章给大家分享的是有关Linux中wc命令怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linux常用命令wc命令用于计算字数,利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称...
    99+
    2023-06-28
  • Linux基础命令wc的用法
    本篇内容主要讲解“Linux基础命令wc的用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux基础命令wc的用法”吧!wc统计文件的字节数、单词数、行数。此命令的适用范围:RedHat、...
    99+
    2023-06-05
  • Linux计数器WC命令怎么用
    这篇文章主要介绍了Linux计数器WC命令怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Linux wc命令用于计算字数,利用wc指令我们可以计算文件的Byte数、字数...
    99+
    2023-06-28
  • linux中wc命令有什么用
    这篇文章主要为大家展示了“linux中wc命令有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux中wc命令有什么用”这篇文章吧。Linux wc 命令wc 命令打印每个输入文件的新...
    99+
    2023-06-16
  • 如何使用Linux中的wc命令
    这篇文章给大家分享的是有关如何使用Linux中的wc命令的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linux常用命令wc命令 统计指定文件中的字节数、字数、行数,并将统计结果显示输出。利用wc指令我们可以计算...
    99+
    2023-06-28
  • 如何在linux中使用wc命令
    今天就跟大家聊聊有关如何在linux中使用wc命令,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.命令格式:wc [选项]文件...2.命令功能:统计指定文件中的字节数、字数、行数...
    99+
    2023-06-13
  • linux中wc命令的作用是什么
    小编给大家分享一下linux中wc命令的作用是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!什么是Linux系统Linux是一种免费使用和自由传播的类UNIX操作系统,是一个基于POSIX的多用户、多任务、支持多线程和...
    99+
    2023-06-15
  • linux中如何使用wc命令
    这篇文章主要介绍了linux中如何使用wc命令,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。全称wc是一个用于统计的工具,全拼为:Word Count(单词统计)实例:1. ...
    99+
    2023-06-09
  • Python实战(1)模拟wc命令部分功
    模拟wc命令统计行和字符的功能。 # vim wc.py #!/usr/bin/env python '''         Author:diege         Email:diege@foxmail.com         Date...
    99+
    2023-01-31
    实战 命令 Python
  • 怎么在linux系统中使用wc命令
    这期内容当中小编将会给大家带来有关怎么在linux系统中使用wc命令,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在Linux下用wc进行计数。返回文件的行数、字数、字节数等。例如:wc wc1...
    99+
    2023-06-13
  • wc命令怎么在linux中使用
    wc命令怎么在linux中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。wc命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。语法:wc [选项]...
    99+
    2023-06-13
  • python实现Linux命令wget
    #!/bin/python #coding:utf-8 def wget(url,new_name=""): ''' wget封装,需提供下载地址,新文件名参数可省略 ...
    99+
    2023-01-31
    命令 python Linux
  • Python实现Linux环境下的ls命
    在Linux下使用ls命令结合正则表达式,能够高效地进行文件搜索,并通过参数操作文件,于是就想用Python实现这个功能以便在Windows上使用 import os import re import sys path = os.get...
    99+
    2023-01-31
    环境 Python Linux
  • 如何使用Linux系统高效数据统计工具wc命令
    本篇文章为大家展示了如何使用Linux系统高效数据统计工具wc命令,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。wc(world count)是一个统计文件字词,字节,行数的Linux命令,它可以帮...
    99+
    2023-06-05
  • python实现linux下的简单进程监
    最近看writeup看的有点头疼,深深感受到了自己的无知。确实还需要学习很多东西、一点一点的积累!加油! python确实很强大哦~,要想学好python就得自己多动手堆代码! 无聊写了一个进程监控的脚本,就当做是练习。其实最终...
    99+
    2023-01-31
    进程 简单 python
  • python如何实现Linux异步epoll
    小编给大家分享一下python如何实现Linux异步epoll,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!代码如下:import socketimpo...
    99+
    2023-06-09
  • Python实现读取Linux系统的CPU以及内存占用
    直接贴代码 import subprocess def get_system_stats(): #de().strip() memory_result = subprocess.check_outpu...
    99+
    2023-05-20
    Python读取Linux系统CPU Python读取系统CPU Python读取内存占用
  • pypy -- 用python实现的py
    pypy 分为两部分:一个 python 的实现 和 一个编译器: pypy provides infrastructure for building interpreters in [r]python. This infrastructu...
    99+
    2023-01-31
    pypy python py
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作