通过使用Python OS模块对文件进行操作。
1.通过标准输入进行对文件遍历
#!/opt/data/ipy/bin/python //python执行文件目录
#!-*- coding:utf8 -*- //设置字符集
import sys //加载sys模块儿
f=sys.stdin.read() //读取标准输入的文件
print f.strip() //迭代出来的文件去除空格
cat 要进行迭代地文件 | ./stdin.py //对标准输入的文件,进行遍历
执行结果:
[root@yetcomm-v2 doc]# cat one | ./1.py
hell ljf kldj fkl ajs kl df jas klf
sdf j lasd fjl asf
ja sl; dfka sl; fdj
jd flk asj fl;a
j;a dfj kla;
2.使用sys.argv方法对文件进遍历
#!/opt/data/ipy/bin/python
#!-*- coding:utf8 -*-
from sys imprt argv #加载sys模块,import功能相同
f=open(argv[1]) #argv[1],由于第一个参数为该脚本本身,所有要进行迭代的文件的键值为1
for i in f:
print i.strip() #对文件进行遍历
./cs.py 文件名称
执行结果:
[root@yetcomm-v2 doc]# ./8.py one
hell ljf kldj fkl ajs kl df jas klf
sdf j lasd fjl asf
ja sl; dfka sl; fdj
jd flk asj fl;a
j;a dfj kla;
3.通过标准输入对文件进行统计
#!/opt/data/ipy/bin/python
#!-*- coding:utf8 -*-
import sys
data=sys.stdin.read()
lines=data.count('\') #统计总行数
words=len(data.split()) #统计单词数量,split() 将以空格为格式,将字符串转换成列表,然后进行统计
chars=len(data) #统计字母数量
print "lines:%(lines)d words:%(words)d chars:(chars)d" % locals() #locals() 全局变量
cat 文件 | ./tj.py
执行结果:
[root@yetcomm-v2 doc]# cat one |./3.py
lines:5 words:26 chars:104
4.通过传递参数对文件进行统计
#!/opt/data/ipy/bin/python
#!-*- coding:utf8 -*-
import sys
f=open(sys.argv[1])
data=f.read()
init_data=data.strip()
lines=init_data.count('\n')
words=len(init_data.split())
chars=len(init_data)
print "words:%(words)s lines:%(lines)s chars:%(chars)s" % locals()
执行结果:
[root@yetcomm-v2 doc]# ./5.py one
words:26 lines:4 chars:103
5.通过判断是标准输入还是传递参数进行对文件统计
#!/opt/data/ipy/bin/python
#!-*- conding:utf8 -*-
import sys
if len(sys.argv)>1: #当通过传递参数形式时,执行下面代码
f=open(sys.argv[1])
data=f.read()
init_data=data.strip()
else: #否则从标准输入进行处理
data=sys.stdin.read()
init_data=data.strip()
lines=init_data.count('\n')
words=len(init_data.split())
chars=len(init_data)
print "lines:%(lines)s words:%(words)s chars:%(chars)s" % locals()
执行结果:
[root@yetcomm-v2 doc]# cat one | ./6.py
lines:4 words:26 chars:103
[root@yetcomm-v2 doc]# ./6.py one
lines:4 words:26 chars:103
转载于:https://blog.51cto.com/davidbj/1223786