欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【14】文件读取并格式化处理

程序员文章站 2022-03-11 08:37:03
案例:读取一个邮箱的文本信息,并生成新的文件信息进行保存 一、把如下的文件结构下的文件格式化处理为另一个文件结构保存 结果: 163邮箱处理后保存的账号密码 ......

【14】文件读取并格式化处理

案例:读取一个邮箱的文本信息,并生成新的文件信息进行保存

2018-10-23
bug心得:在一个文件中两次打开文件不能as 为同一个名的文件对象,比如下边的14 和 36 行 分别要不同的名 file_obj 和file_obj2

 一、把如下的文件结构下的文件格式化处理为另一个文件结构保存

【14】文件读取并格式化处理

 

#__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')

 

结果:

【14】文件读取并格式化处理

163邮箱处理后保存的账号密码

【14】文件读取并格式化处理

 

 

【14】文件读取并格式化处理