2017-07-13 27 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'似乎只接受一個文件? –