2016-05-14 5 views
0

どのようにして、0の出力と、それを呼び出すときにPythonのos.systemコマンドが出力する新しい行を非表示にする/排除することができますか?例えばPythonで `os.system`を呼び出すと、0を隠す方法や削除する方法は?

import os 
os.system('whoami') 

出力:

userX 
0 
+1

私はあなたが「プリント引数は(os.system( 'のような何かをしない限り、 '0'ことを見るべきだと思いませんwhoami ')) '。 Pythonは関数の戻り値を自動的に出力しません。 – Barmar

答えて

6

この内容はどうですか?

from subprocess import check_output 
user_name = check_output('whoami').strip() 
print user_name 
#out: userX 
+0

これは私が探していた、ありがとう – shaveax

2

あなたのpythonコンソール

>>> import os 
>>> os.system('whoami') 
userX 
0 

この0が実際にos.system('whoami')の戻り値であるを使用してのみに表示されAsumingコンソール。スクリプトを使用すると、この出力は得られません。何とか値を割り当てれば、それは技術的に隠されるでしょう

>>> import os 
>>> ret = os.system('whoami') 
userX 
+1

まったく同じことを書こうとしていました:-)私は別の解決策を考えることができません。 – quapka

1

os.system()(エンコードされた)プロセス終了値を返します。 0は成功を意味します。

UNIXでは、戻り値はwait()で指定された形式でエンコードされたプロセスの終了ステータスです。 POSIXはC system()関数の戻り値の意味を指定しないので、Python関数の戻り値はシステムに依存します。 あなたが見る出力はstdoutに書かれているので、あなたのコンソールや端末はPythonの呼び出し元に返されません。代わりにあなたがsubprocess.check_outputを(使用し、標準出力をキャプチャしたい場合

):

x = subprocess.check_output(['whoami']) 
関連する問題