0
私はこのコマンドの出力をos.systemとos.popenの両方で取得しようとしていましたが、失敗しました。私はコマンドがコンソールに出力を投げつけるのを止め、出力をデータ構造またはファイルに取り込み、それをさらにチェックして処理したいと考えています。 xmllintという簡単なツールを使用しています。 私はpythonでツールを使用してxmlを検証中 - 出力を集める
1. p = os.popen('xmllint --noout --relaxng /home/xxxxx_id/folder_xx/xxxx/xxx/rngfile.rng /home/xxxxx_id/folder_xx/xxxx/xxx/xxx/the_xmlfile_that_needstobe_validated.xml')
2. os.system('xmllint --noout --dtdvalid ' + path to the xml + '> xmloutput')
両方が失敗したようで、ファイルやデータ構造にコピーするのではなく、私のコンソールに出力を与えるを試してみました。私は100以上のXMLを検証する必要があり、個々のアウトアウトを個別にチェックできるはずです。
ヘルプ?で解決
:あなたは間違いなくsubprocessを使用する必要があります
os.system('xmllint --noout --dtdvalid ' + path to the xml + '> xmloutput 2>&1')
'xmllint'は、おそらくあなたは' --noout'を用いて抑制しました「標準出力」にパースツリーのそのダンプから分離された、「標準誤差」にいくつかの診断出力を送信しています。アプローチ2では、コマンドの最後に "2>&1"を入れてみてください。または、診断出力を別のファイルに移動する場合は、 "2> somewhereelse.txt"を選択します。 (引用符なし)アプローチ1の場合は、実際には 'subprocess'モジュールを実際に使用するべきです。標準出力と標準エラーで好きなことをすることができます。 –
haha。私は '2>&1'を試してみました。うまくいきました。私の質問をソリューションで編集して戻したいと思っていました。あなたは同じ提案をしていました。ありがとう:-)ガレージ。 – madCode
あなたは大歓迎です! –