Autodesk Maya 2012提供了「mayapy」 - 一種經過修改的python版本,內容充滿了加載Maya文件所必需的軟件包,並充當批量工作的無頭3D編輯器。我從一個bash腳本調用它。如果該腳本使用cmds.file(filepath, open=True)
在其中打開一個場景文件,它會發出警告,錯誤和其他我不想要的信息頁面。當cmds.file命令正在運行時,我想只關閉。我該如何靜音來自特定python命令的所有輸出?
我已經嘗試從我發送到shell腳本內的mayapy的Python命令中重定向,但那不起作用。我可以通過在調用bash腳本時將stdout/err重定向到/ dev/null來使所有事情沉默。有什麼辦法可以在調用shell的過程中使它沉默,但仍然允許腳本中的傳入命令打印出信息?
test.sh:
#!/bin/bash
/usr/autodesk/maya/bin/mayapy -c "
cmds.file('filepath', open=True);
print 'hello'
"
稱之爲:
$ ./test.sh # spews info, then prints 'hello'
$ ./test.sh > /dev/null 2>&1 # completely silent
我看到你已經嘗試將sys.stdout/err指向死寫方法,但是你是否還嘗試將sys .__ stdout__和sys .__ stderr__指向死寫方法?他們通常指向stdout和stderr的原始值,也許mayapy將這些用於打印方法而不是典型的打印方法? – mglowe
我剛給它一個鏡頭,但它仍然打印出所有額外的信息。 –
就像一個完整性檢查:我正在做'sys.stdout = open('/ dev/null','w')',和stderr一樣,並且你的兩個值用下劃線表示。 –