0

为什么这种代码的和平运行不一样。

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

python readlines对于逐行读取输入管道是否不正确。

我的 Xon.sh 版本是 0.7.8

4

1 回答 1

0

所以这有点微妙,但可调用的别名(lambda 是其中的一种)有几种不同类型的对象可以返回。其中之一是 的元组(stdout, stderr, returncode)

str.readlines() 方法返回一个列表,在本例中为['pippo\n', 'pluto\n', 'minnie\n', 'topolino\n']. 所以在这里,

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

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

于 2018-09-26T00:55:38.273 回答