邮箱分类

该博客介绍了一个Python脚本,用于遍历指定目录中的文件,从中提取邮箱地址并根据邮箱类型创建子目录,将相同类型的邮箱保存到对应类型的txt文件中。脚本首先检查目录是否存在,然后递归处理子目录,对于每个文件,它读取内容,提取邮箱类型,并创建相应的目录来存储邮箱文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# 思路:
# 1.遍历目录
# 2.如果是目录接着遍历
# 3.如果是文件
#     1.以只读的形式打开文件
#     2.一行一行的读
#     3.提取邮箱类型
#     4.判断该类型对应的目录是否存在
#         存在
#         不存在---> 创建目录
#     5.写
#     关闭文件

import os

def mailType(sourcePath):
    if not os.path.exists(sourcePath): # 判断目录或文件是否不存在
        return
    listName = os.listdir(sourcePath)  # 创建列表把该目录下的所有文件名和目录名保存起来

    for fileDirName in listName:  # 遍历所有的文件名和目录名
        # 拼接成绝对路径
        absPath = os.path.join(sourcePath,fileDirName)

        # 判断是否目录或文件
        if os.path.isdir(absPath): # 判断是目录
            mailType(absPath)   # 递归执行
        if os.path.isfile(absPath):  # 判断是文件,就进行下一步的操作
            parseMailFile(absPath)

'''3.如果是文件
   1.以只读的形式打开文件
   2.一行一行的读
   3.提取邮箱类型
   4.判断该类型对应的目录是否存在
      存在
      不存在  ---创建目录
   5.写
   关闭文件
'''
# 创建文件操作的函数
def parseMailFile(mailFilepath):

    targetPath = input("输入要保存的文件路径:")
    # 打开文件.
    # with .. as ... 表示 不管在处理文件过程中是否发生异常,
    # 都能保证 with 语句执行完毕后已经关闭了打开的文件句柄
    with open(mailFilepath,mode="r",encoding="utf-8",errors="ignore") as rf:
        while True:
            lineData = rf.readline()  # 一行一行的读
            if len(lineData) == 0:  # 如果lineData 为空 ,即说明已经读完
                break  # 退出while循环

            # 拆分
            # 拆分邮箱和密码
            mailStr = lineData.split("----")[0] # [0]下标取出邮箱
            dotIndex = mailStr.rfind(".") # 从右边开始找到点的下标位置
            aIndex = mailStr.rfind("@")  # 找到@的下标位置

            # 获取邮箱类型
            mType = mailStr[aIndex+1:dotIndex]
            # 判断 邮箱类型是否为空或为0
            if mType == None or len(mType) == 0:
                continue  # 是,跳过本次循环
            # 拼接邮箱目录
            dirMail = os.path.join(targetPath,mType)
            # 判断目录是否不存在
            if not os.path.exists(dirMail):
                os.makedirs(dirMail)
            # 拼接,建立邮箱类型的txt文件
            fileMail = os.path.join(dirMail,mType+".txt")

            with open(fileMail,"a",encoding="utf-8",errors="ignore") as af:
                af.write(mailStr+"\n")  # 写入
                af.flush()  # 关闭



if __name__ == '__main__':
    path = r"F:\python1704\Second weeks\day10\作业\newdir"
    mailType(path)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值