让python程序更linux
来源:互联网 发布:overwolf是什么软件 编辑:程序博客网 时间:2024/05/22 14:45
喜欢linux的人,一定喜欢shell,一定了解grep ,awk, sed .......
linux的魅力在于所有人能够将各种各样简单的东西通过shell这种胶水任意的揉在一起。来实现强大的功能。最典型的就是编辑利器,vim。
组合的方式有很多,但是最让人爱不释手的就是管道。
前几天突发奇想, 随手写过很多python小工具。如果能够把管道的能力也引进过来,那岂不是妙哉?
在linux中,文件处理是我们基本上天天要干的事情(所有东西都是文件)。
相信这样的语句:
cat /tmp/data.txt | grep sshd > temp.txt
让人再熟悉不过了。
那么我们可不以这样:
cat /tmp/data.txt | python filterLine.py -l 3 | grep "hello"
这样就能无缝的用linux的思想,把我们的python脚本通过管道聚合起来。
好吧。整理下需求:
- 脚本过滤出行号%N == 0 的行。作为结果返回
- N需要作为脚本参数传入
- 脚本接收标准输入
- 脚本将结果通过标准输出打印
废话不多说,我们一步一步来:
1. 核心功能,过滤行,并将结果输出:
def lineFilter(baseNum, lCount, line): if baseNum % lCount == 0: print line
2. 脚本可以接收参数:
python2.7引入了一个很实用的模块:argparse。他可以完美的配置你的参数列表,并生成很专业的help信息。
import argparse parser = argparse.ArgumentParser(description='filter line.')parser.add_argument('-l', dest='lineNum', type=int, help='an integer for the line num')args = parser.parse_args()
3. 脚本接收标准输入:
其实实现起来很简单,只需要读取 sys.stdin 就好。
import sysfor l in sys.stdin: dosomething ......
好了,所有需求都实现了。我们把它整合在一起:
import sysimport argparse parser = argparse.ArgumentParser(description='filter line.')parser.add_argument('-l', dest='lineNum', type=int, help='an integer for the line num')args = parser.parse_args()def lineFilter(baseNum, lCount, line): if baseNum % lCount == 0: print lineif __name__ == "__main__": lCount = 0 for line in sys.stdin: lCount += 1 lineFilter(args.lineNum, lCount, line) sys.exit(0)
记得在程序退出的时候加上sys.exit(0)。
这是一个好习惯。因为我们经常需要在一个命令执行完成之后,将命令执行的结果状态返回,以供接下来的流程判断,比如:
ls /tmp/sdfsdfsdfffsd#其实没有这个文件夹if [ $? -ne 0 ]then echo "error"fi
*声明,欢迎转载,但请注明出处,亲。
- 让python程序更linux
- 利用 psyco 让 Python 程序执行更快
- 利用 psyco 让 Python 程序执行更快
- 利用 psyco 让 Python 程序执行更快
- 利用Psyco让Python程序执行更快
- 让C程序更有效率
- 如何精简程序,让程序更美观?
- Python(5):让Python更快
- Python:Python让代码更简单
- 函数指针,让程序更灵活
- 让程序跑的更快
- 让C程序更高效--持续完善
- 使用 C++11 让程序更简洁、更现代
- 让python代码运行的更快
- 让Python更高效的技巧
- alias让linux的命令行更简洁
- 更换程序里的字体,让程序变得更漂亮
- 让Python程序在线执行
- HTML5中的消息通信
- 创建JUNIT测试类
- 2012/8/20<Ext江湖>读书札记
- 历经5年锤炼JavaEE+Android培训视频教程 【黑马程序员】
- 导出自定义菜单
- 让python程序更linux
- PHP(wamp、zend studio、zendDebugger )环境搭建
- 浅析linux2.6 framebuffer
- Spring AOP的基础知识
- 黑马程序员--字符串的讲解
- hdu - 4339 - Query - 树状数组||线段树
- Spring学习小结
- 用matlab的右除实现最小二乘拟合
- Oracle学习----select基本语句