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

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


犯罪嫌疑人X
浏览 144回答 1
1回答

慕标5832272

将输入通过管道传输到 Python 表达式的最简单方法是使用一个可调用的 alias函数,该函数恰好接受 stdin 文件类对象。例如,def func(args, stdin=None):&nbsp; &nbsp; for line in stdin:&nbsp; &nbsp; &nbsp; &nbsp; ls -dl @(line.strip())find $WORKON_HOME -name pyvenv.cfg -print | @(func)当然,您可以@(func)通过将 func 放入来跳过aliases,aliases['myls'] = funcfind $WORKON_HOME -name pyvenv.cfg -print | myls或者,如果您只想迭代 的输出find,您甚至不需要管道。for line in !(find $WORKON_HOME -name pyvenv.cfg -print):&nbsp; &nbsp; ls -dl @(line.strip())
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python