最近再学习python,写了一个分离邮箱的小代码,在此记录一下。
功能描述:主要是打开一个txt文件,分离文件中qq邮箱和163邮箱,
并新建txt文件,将分离的数据分别写入txt文件中。
import os
import datetime
import collections
def mail(path,name1,name2):
#两个新文件的路径
name1path = path + '\\' + name1 + r'.txt'
name2path = path + '\\' + name2 + r'.txt'
#创建一个队列,用队列进行对目录的广度遍历
queue=collections.deque()
app=queue.append(path)
#队列长度不为0就一直遍历
while len(queue)!=0:
# 获取一个目录
mainPath = queue.popleft()
# 获取目录下所有文件,list类型
getAlldir=os.listdir(mainPath)
# print(getAlldir)
# print(type(getAlldir))
#循环list
for listName in getAlldir:
# print(listName)
#新路径是前路径+文件名
newPath=os.path.join(mainPath,listName)
#判断当新路径不是文件夹,才能执行文件操作
if os.path.isdir(newPath) == False:
# 判断文件是不是目标文件
if listName=='date.txt':
# 对目标文件进行读取
with open(newPath,'r') as f:
allData=f.read()
# 截取目标文件中的邮箱
listallData=allData.splitlines()
# print(listallData,type(listallData))
# name1path = path + '\\'+name1 + r'.txt'
# name2path = path + '\\'+name2 + r'.txt'
#循环邮箱数据
for data in listallData:
dataStr=str(data)
# singleData=dataStr.find('qq')
# 判断字符串数据中是不是包含name1,包含就读取写入文件
if dataStr.find(name1) >0:
#首次会创建新文件
with open(name1path,'a+') as r:
with open(name1path, 'r+') as q:
if dataStr not in q.read():
q.write(dataStr+'\n')
q.flush()
# 判断字符串数据中是不是包含name2,包含就读取写入文件
if dataStr.find(name2)>0:
with open(name2path,'a+') as rw:
with open(name2path, 'r+') as w:
if dataStr not in w.read():
w.write(dataStr+'\n')
w.flush()
f.flush()
path=r'C:\Users\cuichuang1\Desktop\test'
mail(path,'qq','163')