案例:读取一个邮箱的文本信息,并生成新的文件信息进行保存
2018-10-23
BUG心得:在一个文件中两次打开文件不能as 为同一个名的文件对象,比如下边的14 和 36 行 分别要不同的名 file_obj 和file_obj2
一、把如下的文件结构下的文件格式化处理为另一个文件结构保存
#__author:"吉*佳" #date: 2018/10/23 0023 #function: # BUG心得:在一个文件中两次打开文件不能as 为同一个名的文件对象,比如下边的14 和 36 行 分别要不同的名 file_obj 和file_obj2 # 读取一个邮箱的文本信息,并生成新的文件信息进行保存 import os import collections # 处理普通文件函数 def work(filePath): resultDir = r'E:[AAA](千)全栈学习python18-10-21day7 esultDir' with open(filePath,'r') as file_obj: while True: #读取到第一行数据 如 #laphael1985@163.com----198587 lineInfo = file_obj.readline() # 设置一个退出while循环的标志 if len(lineInfo) < 5: break mailPsw = lineInfo.split('----')[-1] mailStr = lineInfo.split('----')[0] mailType = mailStr.split('@')[-1].split('.')[0] mailDetail = mailStr.split('@')[0] #存储为新的文件夹和文件文本操作 newDirPath = os.path.join(resultDir,mailType) # 检测没有这个文件夹的话就创建一个 if not os.path.exists(newDirPath): os.mkdir(newDirPath) #创建完类型文件夹之后把新的文件信息存储进去 newFilePath = os.path.join(newDirPath,mailType+'.txt') with open(newFilePath,'a') as file_obj2: file_obj2.write(mailDetail) file_obj2.write('----') file_obj2.write(mailPsw+' ') def getAllDirIT(path): queue=collections.deque() #进队 queue.append(path) #循环,当队列为空,停止循环 while len(queue) != 0: #出队数据 这里相当于找到A元素的绝对路径 dirPath = queue.popleft() # 找出跟目录下的所有的子目录信息,或者是跟目录下的文件信息 dirList = os.listdir(dirPath) #遍历该文件夹下的其他信息 for filename in dirList: #绝对路径 dirAbsPath = os.path.join(dirPath,filename) # 判断:如果是目录dir入队操作,如果不是dir打印出即可 if os.path.isdir(dirAbsPath): print("目录:"+filename) queue.append(dirAbsPath) else: # 找到普通文件,进行处理信息。把这个普通文件的路径传递过去 work(dirAbsPath) # 函数的调用 getAllDirIT(r'E:[AAA](千)全栈学习python18-10-21day7 ewdir')
结果:
163邮箱处理后保存的账号密码