我编写了很多依赖于cygwin中输出重定向的代码。
我现在必须集成一些与cygwin不兼容的库,以及我需要的Windows或Linux。
从cygwin的python script.py 42 <in.txt >out.txt
到powershell的等价物是否有顺畅的方法?我知道powershell不能使用输入/输出重定向,至少不能使用<, >
(文档说它可能很奇怪)但还有另一种方法吗?
答案 0 :(得分:1)
PowerShell绝对可以进行输入/输出重定向,它只是没有与bash 完全相同。
我假设你不想真正学习PowerShell,只需快速获得一个&amp;肮脏的回答所以,到此为止。
对于简单的情况,类似bash的语法可以正常工作:
foo > out.txt
如果不起作用,通常只需将Powershell scriptlet中的工具包装起来即可。换句话说,在其中创建一个foo.ps1
文件:
foo > out.txt
然后只需运行foo.ps1
而不是foo
。
您可能还想查看Tee-Object
,Set-Content
,Add-Content
和Start-Transcript
等cmdlet。从A Task-Based Guide to Windows PowerShell Cmdlets开始。
例如,Start-Transcript
将标准输出捕获为“哑字符串”并将其写入文件。因此,foo > out.txt
的一个等价物是:
Start-Transcript -path out.txt
foo
Stop-Transcript
或者,对于foo >> out.txt
:
Start-Transcript -path out.txt --append
foo
Stop-Transcript
同样,在另一个方向上,Get-Content
读取文本文件并将其打印为哑字符串,您可以将其输出到您的程序:
Get-Content in.txt | foo
当然,另一个明显的可能性是将Python脚本更改为文件名。
在许多情况下,只使用fileinput.input()
代替sys.stdin
免费提供此功能 - 您可以通过stdin或命令行上的文件名(或各种发烧友)传递文件内容组合)和脚本将以相同的方式看到它。