2011-12-13 43 views
6

ben hataları almak sorun yaşıyorum python'un 3 dizeleri işleme biçimini değiştirdi ancak 'iletiyi' biçimlendirmeyi anlamıyorum. Bu kodu geçerli olarak nasıl değiştireceğimi bilen var mı?biçimlendirme dizeleri()

çok teşekkürler

Jon

güncelleme: i olsun heres hata mesajı

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

Siz hata mesajını unuttum. –

cevap

2

sizin hata mesajı "TypeError: 'str' tampon arabirimini desteklemiyor" mı? Bu hata mesajı size tam olarak neyin yanlış olduğunu söyler. Bu sdtin'e dize nesneleri yazmazsınız. Peki sen ne yazıyorsun? Eh, tampon arayüzünü destekleyen herhangi bir şey. Genellikle bu bayt nesnelerdir.

gibi:

önceki yanıta katılabilir
working_file.stdin.write(b'message') 
7

(haricinde parçası "hata mesajı yanlış tam olarak ne anlatır"), ama bunu tamamlamak istiyorum.

1) borusuna bunları yazmak ilk önce her dizeyi kodlayın:

durumda size (ve bir bayt nesne) boruya yazmak istiyorum bir dize olması ise, iki seçeneğiniz var
working_file.stdin.write('message'.encode('utf-8')) 

2) kodlamasını yapacak bir tamponlu metin arayüzüne boruyu sarın:

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

(sen stdin_wrapper.flush çağırmak gerekebilir, böylece G/Ç şimdi tamponlu dikkat edin() .)