2009-12-08 4 views
1

그래서 서브 프로세스에서 stdout을 가져온 다음 파이썬을 사용하여 파일에 출력을 작성하고 싶습니다.파이썬에서 개행 문자 인식하기

내가 겪고있는 문제는 하위 프로세스의 stdout이 서식을 잃어 버렸기 때문에 줄 바꿈이있는 \ n의 위치가 포함되어 있다는 것입니다. 출력을 파일 형식으로 그대로 쓰고 싶습니다. 즉, \ n의 한 줄 대신에 파일에 \ n이있는 줄 바꿈이 들어 있습니다. 여기

내 기존 코드 :

import os, subprocess 
from cStringIO import StringIO 

proc = subprocess.Popen('foo.exe', shell=True, stdout=subprocess.PIPE,) 

stdout_value = proc.communicate()[0] 

f=open('fooOut.txt', 'w') 
f.write(str(repr(stdout_value))) 
f.close() 

현재 파일의 텍스트 : abbbb \ nabbbb \ naaaaab

내가 좋아하는 것이 무엇 :

aaaaab BBBB

abbbb

+1

\\ n을 검색하고 \ n으로 바꾸십시오. – StrixVaria

답변

3

repr()으로 전화하지 마십시오. 그냥

f.write(stdout_value) 
1

repr으로 전화하나요? 이것은 객체를 표현으로 변환하는데, 문자열의 경우 chr(10) (개행)을 '\n'으로 변환하는 것을 의미합니다.

0

repr ("이스케이프", 즉 백 슬래시 문자를 두 배로 늘림)가 "서식을 잃어 버리는"원인입니다. 왜 그렇게하고 있습니까? 그리고 btw str 전화가 완전히 중복 (무해한,하지만 완전히 쓸모없는 - 왜 그것을 가지고?!).