我需要实现一个SVN pre-commit钩子,其执行本身存储在SVN的脚本。
我可以使用svn cat
命令管道将脚本Python解释器,如下所示:
svn cat file://$REPO/trunk/my_script.py | python - --argument1 --argument2
然而, my_script.py
本身需要在标准输入到管道输送数据。
数据不存储在一个文件; 它被存储在网络上。 我宁愿不具有对数据下载到临时文件,因为通常我会呢管道Python程序:
curl http://example.com/huge_file.txt | python my_script.py
我不知道如何这两个管道的结合。
我想通了,如何做到这一点,而无需创建任何临时文件,而不是严格按照“管道”。
curl http://example.com/huge_file.txt | python <(svn cat file://$REPO/trunk/my_script.py) --argument1 --argument2
我用“匿名文件描述符”构建猛砸,它能够代替任何文件路径中使用。
例如python my_script.py
将相当于python <(cat my_script.py)
我不认为这是可能的。 你喂脚本作为标准输入到Python解释器。 这意味着,Python解释已连接到的输入流。 我不觉得剧本内容可以创建第二个标准输入进行读取。
文章来源: Pipe STDIN to a script that is itself being piped to the Python interpreter?