使用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)

执行结果如下:

时间: 2024-08-28 17:09:15

使用Python实现Linux系统wc命令,效果一样的相关文章

用python 实现linux 的wc 命令

#!/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",                  

【Python】linux系统more基本命令python源码分享

此python源码是linux系统more基本命令的实现.实现linux中more的基本功能,当more后加一个文件名参数时候,分屏显示按空格换页,按回车换行',在左下角显示百分比:以处理管道参数的输入,处理选项+num:从指定行开始显示,+/string :查找字符串,从指定字符串之后开始显示 运行环境:安装有PYTHON的linux系统 调用示例:more.py [+num ] [+/pattern] filenamecommand|./more.py [+num ] [+/pattern]

常用的linux系统监控命令

常用的linux系统监控命令 博客分类: linux 服务器 记录一下自己常用的linux系统命令,方便以后查阅,发觉记忆越来越不行了 找到最耗CPU的java线程 ps命令 命令:ps -mp pid -o THREAD,tid,time   或者  ps -Lfp pid 结果展示: 这个命令的作用,主要是可以获取到对应一个进程下的线程的一些信息. 比如你想分析一下一个java进程的一些运行瓶颈点,可以通过该命令找到所有当前Thread的占用CPU的时间,也就是这里的最后一列. 比如这里找到

linux系统find命令详解

find命令 –用途:用于查找文件或目录 –格式:find  [查找范围]  [查找条件] 常用查找条件 –-name:按文件名称查找 –-size:按文件大小查找 –-user:按文件属主查找 –-type:按文件类型查找 –-print:以\n为换行符打印出文件(路径) 高级查找条件 –-perm:按权限查找 –-ctime(-cmin):按文件创建时间(天为单位)查找 –-atime(-amin):按访问时间查找 –-mtime(-mmin):修改时间查找 –-newer:查找比指定文件更

linux系统版本命令

linux系统版本命令 一.查看系统内核版本命令: 1)[[email protected] ~]# cat /proc/version  Linux version 2.6.18-238.el5PAE ([email protected]) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-50)) #1 SMP Sun Dec 19 14:42:44 EST 2010 [[email protected] ~]# 2)[[email protected] 

<Linux系统uname命令用法>

uname命令:操作系统信息的显示 uname 命令主要用于显示操作系统的信息,包括版本.平台的信息. 它的参数主要有以下: -a 显示全部信息 -s 显示内核名称 -n 显示主机名 -r 显示当前系统的内核版本 -m 显示主机的硬件名称 -p 显示处理器的类型 -i 显示主机的硬件平台 -o 显示所使用的操作系统的名称 下面来看一看: [[email protected] ~]# uname -a Linux redhat.example.com 2.6.32-279.el6.i686 #1

查看linux系统版本命令 (转)

查看linux系统版本命令 分类: Linux 知识小结2011-10-10 15:26 240162人阅读 评论(9) 收藏 举报 linuxredhatdebianx86susesun 一.查看内核版本命令: 1) [[email protected]_SYS ~]# cat /proc/versionLinux version 2.6.18-238.el5 ([email protected]) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-50))

Linux系统history命令显示日期和时间,增加history命令保留个数

编辑 /etc/profile文件 # vi /etc/profile 在文件末尾添加 export HISTTIMEFORMAT='%F %T '     #注意有个空格,为了显示时日期与命令之间有空格分割. export HISTSIZE="10000"    #默认保留1000条. 保存 重新login即可生效. Linux系统history命令显示日期和时间,增加history命令保留个数

《Linux系统free命令的使用》学习笔记

free命令用于显示当前系统的内存空闲和使用情况,其中包括物理内存,交换分区内存,内核缓冲区内存以及高速缓存,free的参数报错一下: -b --字节的方式显示内存使用情况 [[email protected] ~]# free -b             total       used       free     shared    buffers     cachedMem:     521449472  138665984  382783488          0   146759