簡體   English   中英

如何避免 os.system() 在 python 中打印出返回值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM