python的命令行管道。

thru的Python项目详细描述


用法

在命令提示下,使用pype对文件中的每个项执行python命令:

$ printf 'abc' | pype str.upper

ABC

将python函数与!

链接在一起
$ printf 'Hello'  | pype 'str.upper ! len'

5

使用?作为每个阶段输入的占位符:

$ printf 'Hello World'  | pype 'str.split ! ?[0].upper() + "!"'

HELLO!

$ printf 'Hello World'  | pype 'str.split ! ?[0].upper() + "!" ! ?.replace("H", "J")'

JELLO!

给定一个响应http://localhost:8080/的服务器和urls.txt中的URL列表:

http://localhost:8080/Requester_254
http://localhost:8080/Requester_083
http://localhost:8080/Requester_128
http://localhost:8080/Requester_064
http://localhost:8080/Requester_276

自动导入所需模块并使用其功能:

$ pype 'str.strip ! requests.get ! ?.text ' < urls.txt

Hello, Requester_254. You are client number 7903 for this server.
Hello, Requester_083. You are client number 7904 for this server.
Hello, Requester_128. You are client number 7905 for this server.
Hello, Requester_064. You are client number 7906 for this server.
Hello, Requester_276. You are client number 7907 for this server.

使用map对每个输入项执行操作(map是默认命令)。使用apply对项序列执行操作。查找从服务器返回的最大数字:

$ pype --newlines=no map 'str.strip ! requests.get ! ?.text ! ?.split()[6] ! int' apply 'max'  < urls.txt

7933

按顺序发出请求很慢。使用--async使I/O非常快(请参阅下面的注意事项)。

$ time pype 'str.strip ! requests.get ! ?.text'  < urls.txt

Hello, Requester_254. You are client number 8061 for this server.
Hello, Requester_083. You are client number 8062 for this server.
Hello, Requester_128. You are client number 8063 for this server.
Hello, Requester_064. You are client number 8064 for this server.
Hello, Requester_276. You are client number 8065 for this server.

real  0m10.640s
user  0m0.548s
sys   0m0.022s

发出并发请求要快得多:

$ time pype --async 'str.strip ! treq.get ! treq.text_content'  < urls.txt

Hello, Requester_254. You are client number 8025 for this server.
Hello, Requester_083. You are client number 8025 for this server.
Hello, Requester_128. You are client number 8025 for this server.
Hello, Requester_064. You are client number 8025 for this server.
Hello, Requester_276. You are client number 8025 for this server.

real 0m2.626s
user 0m0.574s
sys  0m0.044s

安装

待定

注意事项

  • pype假定受信任的命令参数不受信任的输入流数据。它在参数上使用eval,而不是在输入流数据上。如果使用execevalsubprocess或类似命令,则可以从输入流执行任意代码。
  • --async当前仅适用于map,而不适用于apply,仅适用于单个map管道字符串,例如map 'str.upper ! len ! ? & 1',不适用于链,例如map str.upper map len map '? & 1'

状态

  • 查看“问题”页以查找未结票据
  • 此软件包是实验性的alpha前软件包,随时可能更改。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java编辑并重新运行spring引导单元测试,无需重新加载上下文即可加快测试速度   为什么我不能做演员?   java为什么是线程。join通常用于停止安卓中的线程   java从weblogic服务器调用JSON POST REST服务时收到400:错误请求   java在DeviceAdmin模式禁用时设置身份验证?   java SortedMap的keySet()能否始终安全地强制转换到SortedSet?   安卓 java。lang.NoSuchMethodException可包裹类   java JOGL库安装   javatomcat内存管理   java使用getString()中的变量   java将最小星号设置为评级栏   Java中字符串相等的println()方法。。。它到底是如何工作的?   java如何从文本中输出的数组中放入随机图像