2010-05-12 2 views
0

문제점을 파악할 수없고 파이썬 코드가 올바르지 않거나 파이썬 XMPP의 문제점 또는 디자인 제한 사항이 있는지 여부를 알 수 없습니다. 도서관. 나는 파이썬을 처음 접해 보았습니다.python-xmpp 수신 및 IM 메시지 수신자 목록 반복하기

다음은 문제의 코드 스 니펫입니다. 내가하고 싶은 것은 XMPP/Jabber ID 형식으로 한 줄에 하나의 수신자 인 IM 수신자의 텍스트 파일로 읽습니다. 이것은 파이썬리스트 변수로 읽혀진다.

다음 XMPP 클라이언트 세션을 인스턴스화하고받는 사람 목록을 반복하여 각받는 사람에게 메시지를 보냅니다. 그런 다음 잠을 자고 테스트를 반복하십시오. IM 클라이언트뿐만 아니라 수신자의 IM 클라이언트를 테스트하기위한 것입니다. 파일 대신 명령 줄 입력에서 하나의 수신자 만받는 경우를 교대로 처리하는 코드가 있습니다.

최종 결과는 파이썬이 목록을 반복/반복하지만 목록의 마지막 수신자 만 메시지를 수신한다는 것입니다. 확인할 수신자 순서를 변경합니다. 일종의 파이썬 XMPP 라이브러리가 제대로 전달하지 못하거나 런타임시 디버그 인쇄 문이 루핑이 올바르게 작동했기 때문에 라이브러리 호출에 대한 단계가 빠져 있습니다.


recipient = "" 
delay = 60 
useFile = False 
recList = [] 
... 
elif (sys.argv[i] == '-t'): 
    recipient = sys.argv[i+1] 
    useFile = False 
elif (sys.argv[i] == '-tf'): 
    fil = open(sys.argv[i+1], 'r') 
    recList = fil.readlines() 
    fil.close() 
    useFile = True 
... 
# disable debug msgs 
cnx = xmpp.Client(svr,debug=[]) 
cnx.connect(server=(svr,5223)) 
cnx.auth(user,pwd,'imbot') 
cnx.sendInitPresence() 

while (True): 
    if useFile: 
    for listUser in recList: 
     cnx.send(xmpp.Message(listUser,msg+str(msgCounter))) 
     print "sending to "+listUser+" msg = "+msg+str(msgCounter) 
    else: 
    cnx.send(xmpp.Message(recipient,msg+str(msgCounter))) 
    msgCounter += 1 
    time.sleep(delay) 

답변

2

마음에 들지 않아 문제가 발견되었습니다. 필자는 file.readlines()에 의해 반환 된리스트의 엘레멘트 라인의 줄 바꿈 문자를주의해야한다. 그래서 나는 그것을 보낼 때 엘레멘트에 .rstrip ('\ n')을 써야한다. 아웃 메시지.

관련 문제