2011-12-13 4 views
6

는 내가 오류를 얻을하는 데 문제가있어 그 파이썬 3 문자열을 처리하는 방식을 변경했지만 '메시지'를 형식화하는 방법을 이해하지 못합니다. 누구든지이 코드를 어떻게 바꿀 수 있는지 알고 있습니까?형식 문자열은()

많은 감사

업데이트 : 얻을 heres는 오류 메시지

Traceback (most recent call last): 
    File "/pyRoot/goRender.py", line 18, in <module> 
    working_file.stdin.write('3') 
TypeError: 'str' does not support the buffer interface 
+0

너 오류 메시지를 잊어 버렸습니다. –

답변

2

는 오류 메시지 "형식 오류는 'STR'버퍼 인터페이스를 지원하지 않습니다"인가? 이 오류 메시지는 무엇이 잘못되었는지 정확하게 알려줍니다. 해당 sdtin에 문자열 객체를 작성하지 마십시오. 그럼 뭘 써요? 뭐, 버퍼 인터페이스를 지원하는 것. 통상, 이것은 바이트 오브젝트입니다.

처럼 :

나는 이전의 대답에 동의
working_file.stdin.write(b'message') 
7

합니다 (제외 부분 "오류 메시지가 잘못을 정확히 알려줍니다"),하지만 난 그것을 완료하고 싶습니다. 대소 문자를 파이프에 쓰고 자하는 경우 (예 : 바이트 개체가 아님) 두 가지 선택 사항이 있습니다.

1) 파이프에 쓰기 전에 모든 문자열을 먼저 인코딩합니다.

working_file.stdin.write('message'.encode('utf-8')) 

2) 인코딩 할 것 버퍼링 된 텍스트 인터페이스에 파이프 랩 :

stdin_wrapper = io.TextIOWrapper(working_file.stdin, 'utf-8') 
stdin_wrapper.write('message') 

가 (당신이 stdin_wrapper.flush를 호출해야 할 수 있도록 I/O 이제 버퍼링 것을 알을() .)