亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

os.devnull 和 subprocess.pipe 的區別

os.devnull 和 subprocess.pipe 的區別

守候你守候我 2021-06-16 14:01:27
我一直想知道如何不打印從Python的外殼輸出subprocess.call()的分配open(os.devnull, 'w')和subprocess.PIPE對stdout值:subprocess.call(command, stdout=open(os.devnull, 'w'), shell=True)和subprocess.call(command, stdout=subprocess.PIPE, shell=True)這兩行都謹慎地執行存儲在命令變量中的 shell 命令(終端上沒有輸出) - 但我不知道兩者之間的區別。我是使用子流程的新手。
查看完整描述

2 回答

?
紅糖糍粑

TA貢獻1815條經驗 獲得超6個贊

第一種方法是將標準輸出重定向到一個文件(POSIX 中的 /dev/null),而第二種方法是構建一個 PIPE 將輸出重定向到特定的流。

來自命令 help() 的 subprocess.PIPE 的官方定義:“該模塊允許您生成進程,連接到它們的輸入/輸出/錯誤管道,并獲取它們的返回代碼?!?/p>

我會說這種方法就像:我們只是將一些東西放在消息隊列(內存)中一段時間以備后用。但是 subprocess.call 只是返回狀態碼。似乎您無法引用返回值,subprocess.call(command, stdout=open(os.devnull, 'w'), shell=True)因此無法通過`subprocess.call(command, stdin=the_stdout, shell=True) 引用該值。很難在兩個命令之間建立連接。

基于本文中的信息:http : //blog.acipo.com/running-shell-commands-in-python/

還有 Python 2.7 文檔:https : //docs.python.org/2/library/subprocess.html

建議我們可以將 Popen 與 communication() 一起使用

Popen 是 Python 3 提供的高級類。 關于這個有一個很好的資源:https : //stackabuse.com/pythons-os-and-subprocess-popen-commands/


查看完整回答
反對 回復 2021-06-22
?
DIEA

TA貢獻1820條經驗 獲得超3個贊

devnull 在 linux 中指向 /dev/null。當您寫入 /dev/null 時,它將丟棄收到的所有內容。管道有兩端,當你寫到一端時,另一端會收到你寫的消息。


查看完整回答
反對 回復 2021-06-22
  • 2 回答
  • 0 關注
  • 1339 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號