2013-04-12 81 views
-3

我試圖將命令的值輸出到文件。我試過了:將命令的輸出重定向到python中的文件,怎麼做

threaddump() >> /dir/newdir/newfile.log 

它不工作。

那麼,如何將命令的輸出重定向到目錄中的文件? Python的版本是2.3.4。

+2

您是否嘗試使用常規文件操作寫入文件? – msvalkon

+0

您可以使用>&command $ mypymodule.py>&log.file – Greg

回答

1

您的方法存在誤解。 Python不是一個shell,而是一個簡單的解釋器。一個shell允許啓動一個程序,並且它可以總是[1]爲啓動的程序提供一些上下文數據,比如環境變量,當前工作目錄,還有其標準IO流(stdin,stdout,stderr),用於重定向到文件。由於任何Python函數與調用者在相同的進程中運行,它可以使用相同的全局對象,其中包括流。

這留給你一些方法來解決你的問題:

  1. 暫時重定向sys.stdout的一個文件。如果改變被調用的代碼不是一個好的選擇,這是特別有用的,否則我寧願不這樣做,因爲它會影響整個過程。

  2. 返回從函數的數據,並將其打印在呼叫者的站點中的文件。

  3. 將文件傳遞給函數打印到的函數。

我知道的唯一例外是MS Windows CE,它沒有環境變量,工作目錄或通過標準IO流的方式。

+0

任何答案輕鬆地做到這一點?我嘗試了幾個選項,但>&doesnt工作正常,因爲有一個CRON作業正在運行,並且錯誤發生時的輸出正在被最新的運行覆蓋,這是成功的。 – ameya

+0

@msvalkon你是什麼意思由常規文件操作? – ameya

+0

三個選項中的哪一個不是答案?你嘗試過哪些「少數選擇」?此外,「>」重定向不在Python中,但在調用shell中,請參閱我對有關差異的解釋。 –

相關問題