Инфиксный оператор для передачи вывода подпроцесса в функцию python
Может ли xonsh pipe выводить подпроцесс в функцию python?
int($(ls|wc -l)) > 20
как
ls | wc -l | int > 20
Я могу подобраться
from toolz import pipe
pipe($(ls |wc -l),int) > 20
приходит поиск путей портирования
# bash
[ $(ls |wc -l ) -gt 20 ] && echo busy dir
# xonsh
test @$(ls |wc -l) '-gt' 20 and echo busy dir
# xonsh with more python
len(`[^.].*`) > 20 and echo busy dir
Но, как правило, я надеюсь на инфикс-оператор а-ля magrittr's forward pipe %>%
или кокосовое |>
2 ответа
Кто-то проделал трюк в комментарии к проблеме на github, используя sspipe, https://github.com/xonsh/xonsh/issues/1336#issuecomment-502049121, но мы можем обойтись и без него:
'Busy dir' if int($(ls | wc -l))>20 else ''
кокос поддерживает xonsh
Coconut интегрируется с xonsh, что позволяет использовать код Coconut непосредственно из командной строки. Чтобы использовать Coconut в xonsh, просто
pip install coconut
а затем запустить из xonsh или добавитьxontrib load coconut
в ваш файл xonshrc.
https://coconut.readthedocs.io/en/latest/DOCS.html#xonsh-support