Python 将包含18000个电子邮件文本文件的文件夹传递到函数中,以提取文本中的所有电子邮件和主题

Python 将包含18000个电子邮件文本文件的文件夹传递到函数中,以提取文本中的所有电子邮件和主题,python,regex,Python,Regex,我定义了一个函数,我想用它来提取电子邮件并将其存储在列表中,还想从包含大量电子邮件的文件夹中提取主题作为文本文件。功能是: def preprocess(text): em =[] st ="" for i in re.findall(r'[\w\-\.]+@[\w\.-]+\b', text): temp =[] temp = i.split('@')[1] temp = temp.split('.')

我定义了一个函数,我想用它来提取电子邮件并将其存储在列表中,还想从包含大量电子邮件的文件夹中提取主题作为文本文件。功能是:

def preprocess(text):
    em =[]
    st =""
    for i in re.findall(r'[\w\-\.]+@[\w\.-]+\b', text):
        temp =[]
        temp = i.split('@')[1]
        temp = temp.split('.')
    
        if 'com' in temp:
            temp.remove('com')
        for i in temp:
            if len(i) >2:
                em.append(i)
    for i in em:
        st +=i
        st += " "
    return em,st
要在上述函数中传递每个文本文件,我执行了以下操作:

os.chdir(path)

myFiles = glob.glob('*.txt')
print(type(myFiles))
for text in myFiles:
    email_list,subject = preprocess(text)

我得到的输出是一个空的
电子邮件列表
和一个空的
主题
,但当我传递一个文本文件时,函数会给出输出。如何在函数中传递文件夹中的所有文本文件,以便从每个文本文件中提取电子邮件和主题?

您可以在

打开(路径)作为fh:
#在这里与fh合作
文件类可以通过行进行编辑,因此您可以通过这种方式查找电子邮件

results={}
对于路径中的路径:
结果[路径]={}
开放(路径)为fh时:
对于fh中的线路:
如果主题:=测试主题(行):
结果[路径][“主题”]=主题
继续#试试下一行
#电子邮件测试
考虑到主题和电子邮件的收集或电子邮件中的已知点

您何时读取文件内容?目前,您似乎正在调用带有文件路径的函数。这就是我想知道的。谢谢您的回复,我必须使用我上面写的函数,因为我以后必须编辑它以预处理文本,我的问题是我的桌面上有一个文件夹,其中有18000封电子邮件作为tect文件,如何使用该文件夹或将其传递给我定义的函数