wc这个命令可以实现对文件行数、单词数、字节数等的统计。
[root@js python]# wc
hello
good morning
2 3 20
[root@js python]# wc /etc/passwd
32 52 1530 /etc/passwd
下面写一个吧简单的程序来实现这个功能。
程序一:
通过标准输入来获取内容并统计:
[root@js python]# cat wc2.py
#!/usr/bin/env python
import sys
data = sys.stdin.read()
lines = data.count('\n')
words = len(data.split())
chars = len(data)
print "%(lines)s %(words)s %(chars)s" %locals()
执行:
[root@js python]# python wc2.py
hello
world i am
2 4 18
程序二:
通过参数形式获取文件:
[root@js python]# cat argv2.py
#!/usr/bin/python
import sys
import os
try:
fn = sys.argv[1]
except IndexError:
print "please follow a argument after %s" %__file__
sys.exit()
if not os.path.exists(fn):
print " %s is not exists" %fn
sys.exit()
with open(fn) as fd:
data = fd.read()
lines = data.count('\n')
words = len(data.split())
chars = len(data)
print "%(lines)s %(words)s %(chars)s" %locals()
执行:
[root@js python]# python argv2.py /etc/hosts
2 10 158
[root@js python]# python argv2.py /etc/fadjsfd
/etc/fadjsfd is not exists
程序三:
既可以通过标准输入来获取内容并统计,又可以通过参数形式获取文件:
[root@js python]# cat hb2.py
#!/usr/bin/env python
import sys
import os
if len(sys.argv) == 1:
data = sys.stdin.read()
else:
try:
fn = sys.argv[1]
except IndexError:
print "please follow a argument after %s" %__file__
sys.exit()
if not os.path.exists(fn):
print "%s is not exists" %fn
sys.exit()
with open(fn) as fd:
data = fd.read()
lines = data.count('\n')
words = len(data.split())
chars = len(data)
print "%(lines)s %(words)s %(chars)s" %locals()
执行:
1、通过标准输入来获取内容
[root@js python]# python hb2.py
where arre
you
2 3 16
2、通过参数形式获取文件
[root@js python]# python hb2.py /etc/passwd
32 52 1530
[root@js python]# python hb2.py /etc/231wdas
/etc/231wdas is not exists
到此为止 ,实现了wc的统计lines,words,chars功能。
本文介绍了如何使用Python编写三个不同的程序来复现Linux中wc命令的功能,包括统计文本的行数、单词数和字符数。这些程序分别通过标准输入接收数据、通过文件路径读取文件内容以及同时支持这两种方式。
709

被折叠的 条评论
为什么被折叠?



