2024-04-19 04:56:37 发布
网友
我在cygwin中编写了很多依赖于输出重定向的代码。在
我现在必须集成一些与cygwin不兼容的库,在我的例子中需要Windows或Linux。在
从cygwin的python script.py 42 <in.txt >out.txt到powershell的等价物有没有一种平滑的方式?我知道powershell不能使用输入/输出重定向,至少不能使用<, >(文档中说它可以奇怪),但是还有其他方法吗?在
python script.py 42 <in.txt >out.txt
<, >
PowerShell绝对可以进行输入/输出重定向,只是它的方式与bash的方式不同。在
我假设你不想真正学习PowerShell,只需快速得到一个肮脏的答案。所以,就这样。在
对于简单的情况,类似bash的语法可以很好地工作:
foo > out.txt
当这不起作用时,通常只需要在Powershell scriptlet中包装工具。换句话说,创建一个foo.ps1文件,其中包含以下内容:
foo.ps1
然后只运行foo.ps1,而不是foo。在
foo
您可能还需要查看Tee-Object、Set-Content、Add-Content、和{}等cmdlet。以A Task-Based Guide to Windows PowerShell Cmdlets开头。在
Tee-Object
Set-Content
Add-Content
例如,^{}将标准输出捕获为“哑字符串”,并将其写入文件。因此,foo > out.txt的一个等价物是:
或者,对于foo >> out.txt:
foo >> out.txt
Start-Transcript -path out.txt append foo Stop-Transcript
类似地,在另一个方向,^{}读取一个文本文件并将其打印为一个哑字符串,您可以通过管道将其发送到程序:
Get-Content in.txt | foo
当然,另一个明显的可能性是更改Python脚本以获取文件名。在
在许多情况下,只需使用^{}而不是sys.stdin就可以免费地将文件内容通过stdin传递给它,或者在命令行上传递一个文件名(或各种更为复杂的组合),脚本也会以同样的方式看到它。在
sys.stdin
PowerShell绝对可以进行输入/输出重定向,只是它的方式与bash的方式不同。在
我假设你不想真正学习PowerShell,只需快速得到一个肮脏的答案。所以,就这样。在
对于简单的情况,类似bash的语法可以很好地工作:
当这不起作用时,通常只需要在Powershell scriptlet中包装工具。换句话说,创建一个
foo.ps1
文件,其中包含以下内容:然后只运行
foo.ps1
,而不是foo
。在您可能还需要查看}等cmdlet。以A Task-Based Guide to Windows PowerShell Cmdlets开头。在
Tee-Object
、Set-Content
、Add-Content
、和{例如,^{} 将标准输出捕获为“哑字符串”,并将其写入文件。因此,
^{3}$foo > out.txt
的一个等价物是:或者,对于
foo >> out.txt
:类似地,在另一个方向,^{} 读取一个文本文件并将其打印为一个哑字符串,您可以通过管道将其发送到程序:
当然,另一个明显的可能性是更改Python脚本以获取文件名。在
在许多情况下,只需使用^{} 而不是
sys.stdin
就可以免费地将文件内容通过stdin传递给它,或者在命令行上传递一个文件名(或各种更为复杂的组合),脚本也会以同样的方式看到它。在相关问题 更多 >
编程相关推荐