Инфиксный оператор для передачи вывода подпроцесса в функцию 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

Другие вопросы по тегам