【14】文件读取并格式化处理
程序员文章站
2023-12-31 20:51:16
案例:读取一个邮箱的文本信息,并生成新的文件信息进行保存 一、把如下的文件结构下的文件格式化处理为另一个文件结构保存 结果: 163邮箱处理后保存的账号密码 ......
案例:读取一个邮箱的文本信息,并生成新的文件信息进行保存
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](千)全栈学习python\18-10-21\day7\resultdir' 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+'\n') 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](千)全栈学习python\18-10-21\day7\newdir')
结果:
163邮箱处理后保存的账号密码