目标:
$: Get-ChildItem -File | ForEach-Object { $_.ToString() }
foo1
foo2
$: Get-ChildItem -File | ..\..\python\modules\foo.py hello-file $_.ToString()
hello, foo1!
hello, foo2!
我必须运行的版本,但无法正常工作:
Get-ChildItem -File | ForEach-Object {..\..\python\modules\foo.py hello-file $_.ToString()}
与上述命令等效的BASH:
# path vars are set
$: ls | xargs -I {} foo.py hello-file {}
hello, foo1!
hello, foo2!
上面的powershell代码的结果:
运行python的CMD窗口的实例打开和关闭;没有输出通过管道传输到终端。
一个人如何在Powershell中实现这一壮举?是否可以避免更改python代码?
答案 0 :(得分:0)
我不确定您的python文件的内部工作原理是什么,但我认为您会发现这有所帮助:
Get-ChildItem -File | ForEach-Object { python ..\..\python\modules\foo.py hello-file $_.ToString()}
添加单词“ python”将使脚本直接在当前shell中运行。 因此,任何错误/结果都将打印在您可以看到它们的地方。
当我在没有显式输入“ python”的情况下运行时,一个单独的python终端被打开并立即关闭。