Xon.sh和管道中的Lambda别名

时间:2018-09-18 13:20:13

标签: python shell lambda pipe xonsh

为什么这段代码不一样。

samuel@corny ~ $ echo "pippo\npluto\nminnie\ntopolino" | @(lambda a,s=None: s.read())                                 
pippo
pluto
minnie
topolino

第二条命令

samuel@corny ~ $ echo "pippo\npluto\nminnie\ntopolino" | @(lambda a,s=None: s.readlines())                            
pippo
pluto

对于逐行读取输入Pipe的python readlines 是否正确?

我的Xon.sh版本是0.7.8

1 个答案:

答案 0 :(得分:0)

所以这有些微妙,但是callable aliases(lambda是其中的一种)具有一些可以返回的不同类型的对象。其中之一是(stdout, stderr, returncode)的元组。

str.readlines()方法返回一个列表,在这种情况下为['pippo\n', 'pluto\n', 'minnie\n', 'topolino\n']。因此,在这里

  • stdout = "pippo\n"
  • stderr = "pluto\n"
  • returncode从未打印过,但恰好在"minnie\n"这里

这可能不是预期的行为,也是第一个示例起作用的原因。