2014-04-30 2 views
1

일련의 dircmp report_full_disclosure()를 텍스트 파일로 출력하고 싶습니다. 그러나 report_full_disclosure() 형식은 텍스트의 하나의 블롭이며, file.write()는 한 행이 파일에 쓸 것으로 기대하기 때문에 file.write (comparison_object.report_full_disclosure())와는 제대로 재생되지 않습니다.filecmp의 report_full_disclosure()를 텍스트 파일에 쓰려면 어떻게해야합니까?

report_full_disclosure() 보고서를 반복적으로 시도했지만 어느 것도 작동하지 않습니다. 다른 누구도 전에이 특별한 문제가 있었습니까? 파일에 쓰는 다른 방법이 있습니까? 당신은 dircmp.filecmp의 서브 클래스를 만들 수

파일 객체에 동의하지 dircmp.filecmp

답변

1

은 "보고서 생성"방법은, 그들은 단지 print 문을 사용하여 (파이썬 3 버전에서, 또는, print() 기능) , report_full_closurereport_partial_closure (필요한 경우) 각각 print ... 사이트 쓰기 print >>dest, ...에 파일 인수를 허용합니다. report_*_closure이 재귀 적으로 호출되는 경우 dest 인수를 재귀 호출에 전달하십시오.

특정 파일에 출력을 인쇄 할 수있는 능력이 부족하기 때문에이 파일에 선택적 파일 인수를 추가하고 철저하게 테스트하여 Python 프로젝트에 기여할 수 있습니다.

프로그램이 단일 스레드 인 경우 report 메서드를 호출하기 전에 일시적으로 sys.stdout을 대상 파일로 바꿀 수 있습니다. 그러나 이것은 더럽고 깨지기 쉬운 방법이며, 여러분의 프로그램이 영원히 싱글 스레드라고 상상하는 것은 어리석은 일입니다.

+0

감사합니다. 왜 내 스크립트에서 인쇄를 호출하지 않았을 때 터미널에 출력이 있는지 궁금합니다. 내가 말했듯이 내 스스로 하위 클래스를 추가해야 할 수도 있습니다. 감사! –

+0

"print >> dest, ....까지 report '*'closure call이 반복적으로 발생하면 dest 인수를 재귀 호출로 전달하십시오." "print >> dest"가 의미하는 바를 설명 할 수 있습니까? 그리고 report _ * _ closure의 결과를 재귀 적으로 사용하는 방법은 무엇입니까? –

+0

이 문은 "print 'foo'"표준 출력에 인쇄합니다. 이 변수는 "dest"변수에 저장된 열린 파일에 인쇄합니다 : "print >> dest, 'foo'" –

관련 문제