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


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

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

  • 相关阅读:
    2008年假期
    Asp.Net viewstate , session , cookie區別
    C#类型 参考表(MSDN)
    GIS ftp
    gis 好书推荐
    c#应该怎么改进?
    ArcEngine开发体验(附许可)
    gis开源开发资料(持续更新)
    GIS API乱弹
    Autodesk Map3d的应用和开发
  • 原文地址:https://www.cnblogs.com/jiyongjia/p/9834788.html
Copyright © 2020-2023  润新知