Python Kodun Çalışmasına Rağmen Hata Vermesi (IndexError: string index out of range)

BattOS

Hectopat
Katılım
21 Eylül 2019
Mesajlar
88
Daha fazla  
Cinsiyet
Erkek
Merhabalar. Python ile basit bir Twitch botu kodlamaya çalışırken bir hata ile karşılaştım. Kod çalışmasına rağmen hata veriyor ilginç bir şekilde. Çalışmayan kod şu şekilde :

Python:
import string

def getUserAndMessage(buffer):
    line = buffer.split("#")[1]
    return (line.split(":")[0], line.split(":")[1])

Kod çalışıyor ve mesaj ile kullanıcı adını ayırıp döndürebiliyor (bu şekilde mi ifade ediliyor emin değilim). Ama yine de hata veriyor ve hata aslında olmaması gereken bir hata. Hata yalan söylüyor. Hata şu şekilde :
"""
:battos![email protected] PRIVMSG #battos :neden ben
battos typed : neden ben

Traceback (most recent call last):
File "Run.py", line 23, in <module>
user = getUserAndMessage(line)[0]
File "C:\Users\kerem\Desktop\TwitchBot Deneme\Read.py", line 14, in getUserAndMessage
line = buffer.split("#")[1]
IndexError: list index out of range
"""

Görüldüğü gibi çalışıyor ve değişkenlere atanıyor. Burada ben (battos) sohbete "neden ben" yazıyorum ve program bunu alıp konsola "battos typed : neden ben" olarak yazıyor. Çalışmasına rağmen bu hatayı veriyor ve yaklaşık 2 saattir uğraşmama rağmen çözüm bulamadım.

Cevap veren herkese şimdiden teşekkürler.
 
Tam kodu atabilir misin?

Oluşturduğun listelerden birinde, index'inden büyük işlem yapmaya çalışıyorsun gibi.

Run.py :
Python:
from Socket import openSocket, sendMessage
from Initialize import joinRoom
import string
from Read import getUserAndMessage

s = openSocket()
joinRoom(s)
readBuffer = ""

while True:
    readBuffer = readBuffer + s.recv(1024)
    temp = string.split(readBuffer, "\n")
    readBuffer = temp.pop

    for line in temp:
        if line.startswith('PING'):
            s.send("PONG\n")

        print(line)
        
        user = getUserAndMessage(line)[0]
        message = getUserAndMessage(line)[1]
        print (user + " typed : " + message)

Read.py :

Python:
import string

def getUserAndMessage(buffer):
    line = buffer.split("#")[1]
    return (line.split(":")[0], line.split(":")[1])
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Geri
Yukarı