当前位置: 移动技术网 > IT编程>脚本编程>Python > 【14】文件读取并格式化处理

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

2018年10月23日  | 移动技术网IT编程  | 我要评论

台湾旅游网,it培训班,河北曲周

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

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

 

 

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网