2010-05-12 57 views
0

我找不出這個問題,並希望得到一些關於我的Python代碼是否不正確的輸入,或者這是Python XMPP的問題還是設計限制圖書館。順便說一句,我是Python的新手。python-xmpp並通過收件人列表循環以接收和IM消息

下面是代碼片段在下面的問題。我想要做的是在IM收件人的文本文件中讀取,每行一個收件人,採用XMPP/Jabber ID格式。這被讀入一個Python列表變量。

然後,我實例化一個XMPP客戶端會話並遍歷收件人列表,並向每個收件人發送消息。然後休息一段時間並重複測試。這用於負載測試收件人的IM客戶端以及IM服務器。有代碼交替處理從命令行輸入而不是從文件中只輸入一個收件人的情況。

最終發生的事情是,Python在列表中迭代/循環,但只有列表中的最後一個收件人接收到消息。切換收件人的順序以驗證。看起來像Python 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')去除它。 out消息。