博客首页 » Python One liner的Pyp、Pyline、Pyl oneliner
发布于 06 May 2016 06:01
标签 blog
用过Perl的oneliner的人都知道,perl实在可以完美替换掉awk、sed、grep。
而Python是不是也有一样的办法呢个?
默认的Python是不容易办到这一点的,可是Python扩展能力的确很强,就有Pyp、Pyline、Pyl oneliner这几个One-Liner工具。
Pyp和Pyline的介绍可以参考wikipedia
https://en.wikipedia.org/wiki/One-liner_program#Python
Pyl onliner的主页是
http://python-oneliner.readthedocs.io/en/latest/
可惜,windows上,pyp并不能直接运行
pip install pyp 以后
需要再做一个pyp.bat文件,放在pyp相同的目录下(比如我的python 2.7是D:\usr\local\python27\Scripts,如果安装了cygwin使用which就可以看到)
python pyp %*
并且,在python 2.7 windows上,还需要修改一下os.getppid(),换成psutil
pip install psutil
... rerun_path = '%s/pyp_rerun_%d.txt' %(tempfile.gettempdir(),__import__('psutil').Process(os.getpid()) ... gpid = int(os.popen("ps -p %d -oppid=" % __import__('psutil').Process(os.getpid()).ppid()).read().strip()) rerun_gpid_path = '%s/pyp_rerun_%d.txt' %(tempfile.gettempdir() ,gpid) ...
现在可以测试一下了
ls | pyp "p.replace('pyp', 'yes') | p.upper()"
只是在引入pp以后,会有一些控制符混入
D:\usr\local\python27\Scripts>python pyp "p.replace('pyp', 'yes') | pp[1:5]" [35m[0][32mdjango-admin.py[0m [35m[1][32mdjango-admin.pyc[0m [35m[2][32measy_install-2.7.exe[0m [35m[3][32measy_install.exe[0m
本页面的文字允许在知识共享 署名-相同方式共享 3.0协议和GNU自由文档许可证下修改和再使用,仅有一个特殊要求,请用链接方式注明文章引用出处及作者。请协助维护作者合法权益。
系列文章
文章列表
- Python One liner的Pyp、Pyline、Pyl oneliner
这篇文章对你有帮助吗,投个票吧?
留下你的评论