2017-11-07 6 views
1

「警告:aptには安定したCLIインターフェイスがありません。スクリプトで注意して使用してください。」というメッセージが表示されます。 Pythonのサブプロセスからのapt実行しているときpythonスクリプトでaptを使用するときにstdoutから特定のメッセージを除外する方法は?

process = subprocess.Popen(['apt', 'upgrade', '-y'], stdout=subprocess.PIPE)

がどのように私は迷惑な警告を削除することができない単純なスクリプトで

?私は出力の残りの部分を気にしない、私は警告を取り除きたい。

編集:私は傾向からのライブの出力を得ることができるように

私は出力ものの反復処理しています。どうすればそこから削除できますか?

with open('test.log', 'w') as f: 
     process = subprocess.Popen(['apt', 'upgrade', '-y'], 
            stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
     for line in iter(process.stdout.readline, ''): 
       sys.stdout.write(line) 
       f.write(line) 

答えて

1

このメッセージはstderrで送信されます。私はあなたがstdoutで行ったのと同じように、それをパイプで捕捉します:

>>> process = subprocess.Popen(['apt', 'search', 'python'], stdout=subprocess.PIPE, 
...               stderr=subprocess.PIPE) 
>>> stdout, stderr = process.communicate() 
>>> stderr 
'\nWARNING: apt does not have a stable CLI interface. Use with caution in scripts.\n\n' 
+0

こんにちは、私の更新された質問をご覧ください。私はまだ、その警告をどのように除外するのかまだ分かりません。 – answerSeeker

+0

@answerSeeker:あなたの更新コードは私のためにそのメッセージを生成しません。 – Blender

+0

ああありがとう!私はそれが同じだが、stderr = subprocess.PIPEは本当にそれを修正すると思った – answerSeeker

関連する問題