2017-07-13 26 views
1

是否有在PowerShell中的方式来重定向从蟒蛇一个地方打印语句和return语句到另一个地方?执行python的Powershell:仅重定向打印语句?

比如我试图

$ python myPythonScript.py args >> logFile 

我得到的print语句输出在我的日志文件(尽管它看起来可怕,清洁将是未来工作)

但是,我没有得到在输出中从python返回语句值。我也没有追上他们,如果我用*>>

任何想法发生了什么?

Python的实施例:

def main(args) 
    print "This goes to file" 
    #parse flags... 
    #do something here... 
    MyVar = "Please " + "Work" 

    return MyVar #doesn't go anywhere 
if(__name__ == '__main__': 
    main(sys.argv) 
+0

什么是你的“返回声明”? – Fabien

+0

Python的例子添加 –

+0

您只能从您的应用程序返回整数,所以你将无法得到该字符串。你使用'echo%errorlevel%'来打印python脚本的返回int值。我会做出答复。 – Fabien

回答

1

的程序(或退出代码)的返回值只能是一个整数,而不是字符串。

首先,确保你返回一个int,或做exit(n)其中n是一个int。

你可能也想解决:

if(__name__ == '__main__'): 
    return main(sys.argv) 

然后,您可以用echo %errorlevel%

访问您在PowerShell中的程序(脚本)的返回值。如果你真的想通过PowerShell中使用的字符串,你应该:

  1. 打印您的标准错误而不是标准输出
  2. 打印的文件名原木标准输出的执行结束
  3. 如果你想重定向stderr重定向到您的日志文件和标准输出到一个PowerShell管道| - 或者你可以这样的结果可以在命令行中使用圆括号$()内执行python脚本
+0

谢谢Fabien。我如何获得我需要的字符串?在我的实际程序中,我需要的字符串是文件名 - 整数不起作用。 –

+0

我更新了我的答案 - 固定的错误 – Fabien

+0

我这个现在玩。我如何指导一个登录文件和一个管道?有很好的例子[这里](https://stackoverflow.com/questions/8925323/redirection-of-standard-and-error-output-appending-to-the-same-log-file),而是直接在两个怎么办一次呼叫分开的地方? '-RedirectStandardOutput'似乎只接受一个文件? –