Получить только текстовые файлы электронной почты и все содержимое других текстовых файлов из каталога, который содержит как электронные письма, так и другие файлы - PullRequest
0 голосов
/ 18 февраля 2019

Я хочу получить только текстовые текстовые файлы электронной почты без тегов «туда и обратно», удаляя верхние и нижние колонтитулы и все содержимое других текстовых файлов из каталога, который содержит электронные письма, а также другие файлы.Мой вопрос здесь заключается в том, как правильно использовать содержимое is_multipart и get_payload в коде, чтобы действие выполнялось только для файлов, которые являются электронными письмами

import os, sys, csv
import glob
import re
import email
#from tika import parser
import warnings
warnings.filterwarnings(action='ignore', category=UserWarning, module='gensim')
from gensim.summarization import summarize, keywords

# Set path to directory where files are
dirs = 'C:\\Users\\Lenovo\\.spyder-py3\\Testing\\'
#os.chdir(dirs)
for filename in glob.glob(os.path.join(dirs, '*.txt')):
    try:
        for files in filename:
            file = open(filename, 'r', encoding ='utf-8')
            filecontents = file.read()
            filecontents = re.sub(r'\s+', ' ', filecontents)
            print(filecontents)
            filecontents = filecontents.strip('\n')
            b = email.message_from_string(filecontents)
            if b.is_multipart():
                for payload in b.get_payload():
                    # if payload.is_multipart(): ...
                    print (payload.get_payload())
            else:
                print (b.get_payload())
            summary = summarize(filecontents, ratio =0.10)
            print(summary)
            kw = keywords(filecontents, words=15)
            print(kw)
            break
            #writer.writerow([file, summary, kw])
    except Exception as e:
        pass
...