2017-08-28 33 views
2

在一個名爲「emails.txt」的文件中,我有幾個帳戶以這種格式 - email:pw。 我已經完成拆分,並且一切都很完美,但前提是列表中只有一個account:pw(Python 3)來自.txt文件的imaplib登錄

如果我把2個或更多,我登錄失敗的第一個帳戶。

這裏的代碼(登錄和功能,不包括在內)

with open('emails.txt') as emails: 
    for line in emails: 

     EMAIL_ACCOUNT = line.split(":", -2)[-2] 
     PASSWORD = line.split(":", 1)[1] 

     print(PASSWORD) 

     EMAIL_FOLDER = "INBOX" 

     M = imaplib.IMAP4_SSL('imap.gmx.com') 

     try: 
      rv, data = M.login(EMAIL_ACCOUNT, PASSWORD) 
     except imaplib.IMAP4.error: 
      print("Failed!" + EMAIL_ACCOUNT) 
      sys.exit(1) 
      time.sleep() 
     M.logout() 

我應該怎麼做,使之:從列表中第一個帳戶

    1. 登錄,並且做的工作
    1. 從第二個登錄a從列表ccount,並且做的工作等

回答

1

既然你不提供一個例子emails.txt文件,我將訴諸猜測到底發生了什麼。 對不起,如果這是錯誤的!

請注意,for line in emails:中的行包含尾隨換行符。 也許在編輯時最後一行的末尾沒有插入換行符(這可能會導致後續自動化問題,但這不在問題之列)。

所以,當你有一個文件email1:password1(密碼後沒有換行符),一切都很好。 如果您的文件爲email1:password1\nemail2:password2(這裏的\n是換行符),則您的程序會將第一封電子郵件的密碼看作password1\n,而不僅僅是password1

刪除尾隨換行符的一種方法是使用strip()函數,如下所示:PASSWORD = line.split(":", 1)[1].strip()


此外,它可以是一個很好的習慣,遵循定義「一條線是東西與一個換行符結束」,即最後一行之後添加一個換行符,太。這可以實現一致性,簡化自動化並移除角落案例。但我離題了。

+0

謝謝! .strip()完成了這項工作! – custom045