2017-04-17 9 views
-1

バイトのようなオブジェクトが必要とされ、「STR」ではない(Liberty-)Basicについて以来のPythonを使用して1980年別の例外TypeError:私はPythonで完全な初心者だけど、私は楽しみのためにプログラミングされている

3.5.2私はこのスクリプトをテストしていた:バイトのようなオブジェクトが必要な、ない「str」はとどのように私はそれを解決することができます:私はTypeError例外を取得する理由

import time, telnetlib 

host = "dxc.ve7cc.net" 
port = 23 
timeout = 9999 

try: 
    session = telnetlib.Telnet(host, port, timeout) 
except socket.timeout: 
    print ("socket timeout") 
else: 
    session.read_until("login: ") 
    session.write("on0xxx\n") 
    output = session.read_some() 
    while output: 
     print (output) 
     time.sleep(0.1) # let the buffer fill up a bit 
     output = session.read_some() 

誰も教えてもらえますか?

+0

[TypeError: 'str'ではなく、バイトのようなオブジェクトが必要です(http://stackoverflow.com/questions/33003498/typeerror-a-bytes-like-object-is-required-not) -str) –

答えて

0

Python 3では(ただし、ではなく、Python 2の)、str and bytes are distinct typesは混在できません。ソケットに直接strを書き込むことはできません。 bytesを使用する必要があります。文字列リテラルの先頭にbという接頭辞を付けて、それをbytesリテラルにするだけです。

+0

これは私が必要なものです、ありがとう!私もここで 'b'を追加しなければならなかった:session.write(b "on0xxx \ n") – ON5MF

0

Python 2.xでは、ネット経由で送信されたデータをエンコードする必要はありませんが、Python 3.xが必要です。 送信したいものはすべて.encode()関数でエンコードする必要があります。 .decode()でデコードする必要があります。

関連する問題