2017-11-29 14 views
0

XML構造をElementTreeで標準出力に出力しようとしています。私は次のように試しています:ElementTree書き込み関数が標準出力に書き込まない

root = ET.Element('networkData')  
tree = ET.ElementTree(root) 
tree.write(sys.stdout) 

出力がありません。引数を文字列に変更すると、期待どおりXMLファイルが生成されます。この問題に対処するようだ、私はいくつかのヒットを取得エラーが、どれもがグーグル

-> tree.write(sys.stdout, encoding='utf-8') 
(Pdb) n 
TypeError: write() argument must be str, not bytes 

:デバッガ(SOからのエンコードチップを追加する)私が手を使います。 また、sys.stdoutは_io.TextIOWrapperオブジェクトなので、エラーメッセージで混乱します。

+0

オンpython3? 'tree.write(sys.stdout、encoding = 'unicode')'が動作するかもしれません。 – Abdou

+0

'tree.write(sys.stdout.buffer)'を使用してください。 – mzjn

答えて

0

問題はエンコーディングと関係があります。正しいエンコーディングがないと、引数はバイナリとして扱われ、エラーメッセージを説明するstringとして扱われません。適切な書き込み文は次のようになります。

tree.write(sys.stdout, encoding='unicode') 

または

tree.write(sys.stdout.buffer) 

コメントで指摘したように。

関連する問題