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,而不是在输入流数据上。如果使用exec、eval、subprocess或类似命令,则可以从输入流执行任意代码。
- --async当前仅适用于map,而不适用于apply,仅适用于单个map管道字符串,例如map 'str.upper ! len ! ? & 1',不适用于链,例如map str.upper map len map '? & 1'。
状态
- 查看“问题”页以查找未结票据
- 此软件包是实验性的alpha前软件包,随时可能更改。