# 思路: # 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)
邮箱分类
最新推荐文章于 2023-05-18 18:51:19 发布

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

被折叠的 条评论
为什么被折叠?



