Лямбда-псевдоним в Xon.sh и трубы
Почему этот код не работает так же.
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 для чтения строка за строкой входной канал.
Моя версия Xon.sh - 0.7.8
1 ответ
Так что это несколько неуловимо, но вызываемые псевдонимы (лямбды которых относятся к одному типу) имеют несколько разных типов объектов, которые они могут вернуть. Одним из которых является кортеж (stdout, stderr, returncode)
,
str.readlines()
Метод возвращает список, который в этом случае ['pippo\n', 'pluto\n', 'minnie\n', 'topolino\n']
, Так вот,
stdout = "pippo\n"
stderr = "pluto\n"
returncode
никогда не печатается, но бывает"minnie\n"
Вот
Это, вероятно, не предполагаемое поведение и именно поэтому первый пример работает.