파이썬 3.5와 함께 전자 메일 (제목, 본문)을 인쇄하려고합니다. 내가 FORS 및 분할의 내 엉킴이 범인이라고 생각하지만,IndexError :리스트 인덱스가 범위를 벗어남 (파이썬 3.5)
Traceback (most recent call last):
File "/home/user/PycharmProjects/email/imaplib_fetch_rfc822.py", line 21, in <module>
subject_, from_, to_, body_, = ' ' + email[0], email[1], email[2], 'Body: ' + email[4]
IndexError: list index out of range
나는이 원인을 확실하지 않다 : 나는 이상한 인덱스 오류가 발생합니다. 나는 noobie 코더입니다, 그래서 내가이 일을하고있어 우아한에서 멀리 상상 :
import imaplib
import imaplib_connect
with imaplib_connect.open_connection() as c:
c.select('INBOX')
typ, [msg_ids] = c.search(None, 'TEXT', 'Sunday')
for num in msg_ids.split():
typ, msg_data = c.fetch(num, '(RFC822)')
for raw_email in msg_data:
# raw_email is a tuple of len==2, we need the 2nd item:
b = raw_email[1]
email = str(b).split('\r\n')
subject_, from_, to_, body_, = ' ' + email[0], email[1], email[2], 'Body: ' + email[4]
print(subject_, '\n',
from_, '\n',
body_, '\n')
내가 문제가 무엇을 이해하지 않습니다. 한 가지주의 할 점은 전자 메일 부분의 전자 메일 [0], 전자 메일 [1], 전자 메일 [2] 및 전자 메일 [4]에 전자 메일 [3]을 건너 뛰는 것입니다. 누구든지 내가 뭘 잘못하고 있는지 알 수 있니? 오류를 해결하기 위해 무엇을 할 수 있습니까?
가 실제로 오류를 일으키는 코드를 표시 할 수 있습니다 귀하의 이메일은 항상 길이 ==와
email
프로그램 객체에서 가정 일을해야합니까? 트레이스 백 (traceback)은 정확히 어떤 라인과 파일이 있는지를 보여줍니다. 또한 그것이 나를 미치게 만들었 기 때문에 당신은 '범위 (0, 1)에 있음'이 ** 길이 1 **의 루프인지 알 수 있습니까? –그게 무슨 가치가 있는지, 당신은 당신의'for i in range (0, 1)'루프에서'i'를 참조하지 않습니다. 'range (0, 1)'은 본질적으로 그냥 0을 참조하는 것이 아니라, 그 범위에서 1이 제외 되었기 때문입니다. –
@ Two-Bit Alchemist 코드가 오류를 일으키는 부분을 포함하도록 게시물을 변경했습니다. 'c = [1]'행에 있습니다. 그 점을 지적 해 주셔서 감사합니다! 그렇습니다, 내 루프가 ... 이상합니다 ... 나는 그걸 어떻게 써야할지 모르겠다. 단지 [0]에 들어있는 것처럼? – Joansy