通过使用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