[英]How to avoid os.system() printing out return value in python
我正在使用 Python 調用 bash 來執行另一個 bash 腳本:
begin = int(sys.argv[1])
result = os.system("/tesladata/isetools/cdISE.bash %s" %begin)
在我打印result
,它不僅給了我輸出,還給了我返回狀態(這里是0
)。 如果只需要輸出怎么辦?
而且,出於好奇,在 Python 中有多少種調用 bash 的方法? 如果有人能給我一些關於如何使用它們的參考,我會很高興, os.system()
我只找到了os.system()
和os.popen()
。
實際上, result
只是作為整數的返回狀態。 你調用的東西寫入標准輸出,它從你的程序繼承,所以你會看到它立即打印出來。 它永遠無法用於您的程序。
查看子流程模塊文檔以獲取更多信息:
http://docs.python.org/library/subprocess.html
包括捕獲輸出,以及以不同方式調用 shell。
您可以通過管道到/dev/null
丟棄任何輸出。
begin = int(sys.argv[1])
result = os.system("/tesladata/isetools/cdISE.bash %s > /dev/null" %begin)
如果您也不想顯示錯誤,請將>
更改為2&>
以丟棄stderr
。
您的 python 腳本根本沒有 bash 腳本的輸出,而只有它返回的“0”。 bash 腳本的輸出與 python 腳本進入相同的輸出流,並在打印結果值之前打印。 如果您不想看到 0,請不要打印結果。
你可以像這樣使用 subprocess 模塊將它分配給一個 var (x for ex)
import subprocess
x = subprocess.run('your_command',capture_output=True)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.