2012-11-28 4 views
2

subprocess을 사용하여 생성 된 데몬의 명령을 실행하고 결과를 파일에 쓰려고합니다. Popen의 결과 문자열은 bytestring입니다. 파일을 작성하기 전에 이것을 사람이 읽을 수있는 형식으로 어떻게 포맷합니까? python3.2python3.2 subprocess.popen 사용 - 파일에 쓰기 위해 결과 stdout을 포맷해야합니다.

를 사용하여 시도 :

print (x,file=o) 
f.write(str(rc.so)) 
print (str(rc.so) + "\n") 

아무것도 읽을 찾고 끝나는 없습니다 ..

의심 코드 : 당신이 그것을 해독 할 필요가

rc = subprocess.Popen([cmd], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
    x = rc.stdout.readlines() 
    rc.so, rc.se = rc.communicate() 
    with open(of,'w') as o, open(ef,'w') as e: 
    print (str(rc.so) + "\n",file=o) 
+1

당신이 그것을 디코딩 시도 유무 : 더 같은

은 그래서 인쇄 문을해야 하는가? 'your_string.decode ('utf-8')'? – Blender

답변

3

:

my_byte_string.decode('utf-8') 

utf-8 상황에 맞는 최상의 디코딩 옵션이 아닐 수도 있지만, 여러 가지 옵션 중 하나입니다.

print (rc.so.decode('utf-8') + "\n",file=o) 
+1

여기서 'utf-8'대신'sys.getdefaultencoding()'을 원할 수도 있습니다. 물론 다른 프로그램이 제대로 동작한다고 가정합니다. – abarnert