[Python] One liner的Pyp、Pyline、Pyl oneliner

博客首页 » 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]"
[0]django-admin.py
[1]django-admin.pyc
[2]easy_install-2.7.exe
[3]easy_install.exe

本页面的文字允许在知识共享 署名-相同方式共享 3.0协议和GNU自由文档许可证下修改和再使用,仅有一个特殊要求,请用链接方式注明文章引用出处及作者。请协助维护作者合法权益。


系列文章

文章列表

  • Python One liner的Pyp、Pyline、Pyl oneliner

这篇文章对你有帮助吗,投个票吧?

rating: 0+x

留下你的评论

Add a New Comment