2017-11-29 11 views
0

ElementTree를 사용하여 표준 구조로 XML 구조를 출력하려고합니다. 나는 다음과 같이 시도하고있다 :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이 아닌 2 진수로 처리됩니다. 적절한 쓰기 문은 다음과 같아야합니다

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

또는

tree.write(sys.stdout.buffer) 

등은 코멘트에 지적했다.