为了账号安全,请及时绑定邮箱和手机立即绑定

在 xonsh 中,如何从管道接收到 python 表达式?

在 xonsh 中,如何从管道接收到 python 表达式?

犯罪嫌疑人X 2021-08-05 17:15:29
在xonshshell 中,如何从管道接收到 python 表达式?使用find命令作为管道提供程序的示例:find $WORKON_HOME -name pyvenv.cfg -print | for p in <stdin>: $(ls -dl @(p))该for p in <stdin>:显然是伪代码。我必须用什么来代替它?注意:在 bash 中,我会使用这样的构造:... | while read p; do ... done
查看完整描述

1 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

将输入通过管道传输到 Python 表达式的最简单方法是使用一个可调用的 alias函数,该函数恰好接受 stdin 文件类对象。例如,


def func(args, stdin=None):

    for line in stdin:

        ls -dl @(line.strip())


find $WORKON_HOME -name pyvenv.cfg -print | @(func)

当然,您可以@(func)通过将 func 放入来跳过aliases,


aliases['myls'] = func

find $WORKON_HOME -name pyvenv.cfg -print | myls

或者,如果您只想迭代 的输出find,您甚至不需要管道。


for line in !(find $WORKON_HOME -name pyvenv.cfg -print):

    ls -dl @(line.strip())


查看完整回答
反对 回复 2021-08-05
  • 1 回答
  • 0 关注
  • 143 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信