python数据分析之对密码文件的处理(数据分析案例一)

该博客主要介绍了如何使用Python处理密码数据,包括提取、排序、统计密码出现次数,并将结果转换为字典及按次数排序。通过示例代码详细展示了整个流程,涉及文件操作、字符串处理和列表操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 本节内容的数据见 电脑F:\python数据\Python海量数据(精缩版)百度网盘“我的数据文件/Python海量数据”
  • 在本节内容中也许很多文件名特别长,但是这么做的好处是不用加注释,还是很值得提倡的

一、提取密码

在这里插入图片描述

csdnfilepath="E:\python数据分析\百度网盘\Python数据分析海量数据营销day1\Python数据分析海量数据营销day1\password\csdn.txt"  //用于读文件
csdnpassfilepath="E:\python数据分析\百度网盘\Python数据分析海量数据营销day1\Python数据分析海量数据营销day1\password\csdnpass.txt"  //用于写文件
file=open(csdnfilepath,"rb")
passfile=open(csdnpassfilepath,"wb")
while True:
    line=file.readline()
    if not line:
        break
    line=line.decode("gbk","ignore")   #现在文件中是二进制存取的,我们要解码,忽略那些转码之间的错误
    linelist=line.split(" # ")
    passfile.write((linelist[1]+"\n").encode("utf-8"))   #编码为二进制数据
passfile.close()
file.close()
print("over")

二、对密码进行排序

在这里插入图片描述

csdnpassfilepath="E:\python数据分析\百度网盘\Python数据分析海量数据营销day1\Python数据分析海量数据营销day1\password\csdnpass.txt"
passfile=open(csdnpassfilepath,"rb")
mypasslist=passfile.readlines()
passfile.close()
print("读取完成")
mypasslist.sort()
print("排序完成")

csdnpassfilesortpath="E:\python数据分析\百度网盘\Python数据分析海量数据营销day1\Python数据分析海量数据营销day1\password\csdnsortpass.txt"
passsortfile=open(csdnpassfilesortpath,"wb")
for line in  mypasslist:
    passsortfile.write(line)
passsortfile.close()
print("写入完成")

三、统计密码出现的次数

在这里插入图片描述

mylist=[1111,2222,2222,2222,3333,3333,4444,4444,5566]
i=0
while i<len(mylist): #循环
    times=1
    password=mylist[i] #记录原始密码


    #相等,统计次数,  保证不能超过列表的长度
    while  i+1<=len(mylist)-1 and   mylist[i]==mylist[i+1]:
        times+=1
        i+=1

    print(times,password)
    i=i+1

'''
1 1111
3 2222
2 3333
2 4444
1 5566

在这里插入图片描述

csdnpassfilesortpath="E:\python数据分析\百度网盘\Python数据分析海量数据营销day1\Python数据分析海量数据营销day1\password\csdnsortpass.txt"
passsortfile=open(csdnpassfilesortpath,"rb")
mylist=passsortfile.readlines()
passsortfile.close()
print("读取完成")

savepasswordtimesfilepath="E:\python数据分析\百度网盘\Python数据分析海量数据营销day1\Python数据分析海量数据营销day1\password\csdnpasssorttimes.txt"
savepasswordtimesfile=open(savepasswordtimesfilepath,"wb")
length=len(mylist) #长度
i=0
while i<length: #循环
    times=1
    password=mylist[i].decode("utf-8") #记录原始密码
    while  i+1<=length-1 and  mylist[i].decode("utf-8")== mylist[i+1].decode("utf-8"):
    #永远不要忘了,你读出来的数据是二进制的,必须先解码
        times+=1
        i+=1
    savepasswordtimesfile.write( (str(times)+" "+password).encode("utf-8")  )  #编码为2进制存取
    i+=1

savepasswordtimesfile.close()

结果展示:
在这里插入图片描述

四、把密码统计次数文件转换为字典

在这里插入图片描述
上面是密码统计次数的文件,我们想把它转换为字典的形式,而且按照密码次数进行排序

passwordtimesfilepath="E:\python数据分析\百度网盘\Python数据分析海量数据营销day1\Python数据分析海量数据营销day1\password\csdnpasssorttimes.txt"
passwordtimesfile=open(passwordtimesfilepath,"rb")
mylist=passwordtimesfile.readlines()
passwordtimesfile.close()
print("读取完成")

#现在的mylist是一个“次数  密码”的二进制形式[b"32  abcdbc",b"333  123321"]
#我们想把它转换为[[32,"abcabc"],[333,"123321"]]的形式
passwordtimeslist=[]
for  line in mylist:
    line=line.decode("utf-8")  #把二进制文件解码
    tmplist=line.split(" ")
    passwordtimeslist.append(tmplist)
print("提取完成")
passwordtimeslist.sort(key=lambda  x:int(x[0]))  #按照出现的次数排序
passwordtimeslist.reverse()  #从大到小的排序
print("排序完成")
savedictfilepath="E:\python数据分析\百度网盘\Python数据分析海量数据营销day1\Python数据分析海量数据营销day1\password\csdnpasssorttimesdict.txt"
savedictfile=open(savedictfilepath,"wb")
for tmplist in passwordtimeslist:
    savedictfile.write(  (tmplist[0]+" "+tmplist[1]).encode("utf-8"))
savedictfile.close()
print("over")

在这里插入图片描述

五、一步到位

将上述过程一步到位
在这里插入图片描述

inputpath="E:\python数据分析\百度网盘\Python数据分析海量数据营销day1\Python数据分析海量数据营销day1\password\csdn.txt"
outputpath="E:\python数据分析\百度网盘\Python数据分析海量数据营销day1\Python数据分析海量数据营销day1\password\csdnlast.txt"
inputfile=open(inputpath,"rb")
outputfile=open(outputpath,"wb")
alllinelist=inputfile.readlines() #全部读取
print("读取完成")
passwordlist=[]
for line  in alllinelist:
    line=line.decode("gbk","ignore")  #务必先解码转换成字符才能处理
    linelist=line.split(" # ")
    if len(linelist)==3:
        passwordlist.append(linelist[1]) #密码加入到列表
del  alllinelist #这是大文件,不用的变量务必及时处理,清理内存
print("提取密码完成")
passwordlist.sort()
print("密码排序完成")
passwordtimeslist=[] #用来统计次数
length=len(passwordlist)
i=0
while i<length:
    times=1
    password=passwordlist[i]
    while i+1<=length-1 and  passwordlist[i]==passwordlist[i+1]:
        times+=1
        i+=1
    passwordtimeslist.append([password,times])
    i+=1
del passwordlist
print("次数统计完成")
passwordtimeslist.sort(key=lambda  x:x[1]  )
passwordtimeslist.reverse()
print("次数排序完成")
for  line  in  passwordtimeslist:
    outputfile.write((str(line[0])+" # "+str(line[1])+"\n").encode("utf-8"))
print("密码写入完成")

inputfile.close()
outputfile.close()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BlackTurn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值