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

2018-10-23 03:07:04来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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

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邮箱处理后保存的账号密码

 

 

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:如何用Python为你的邮箱加油?还有这种操作!

下一篇:元组