- pickle函数用法
import pickle
sfzlist=[["10","txm"],
["0","tcm"],
["1","tvm"],
["2","twm"],
["3","tfm"],
["4","tgm"],
["5","ttm"],
["6","tym"],
["7","tgm"],
["8","thm"],
["9","tom"]]
file = open("sfz.bin","wb")
pickle.dump(sfzlist,file) #dump全部写入文件,若没有自动在该目录下创建一个文件
file.close() #dump把内存写入文件
''''--------------------------------------------------------------''
sfzlist = []
file = open("sfz.bin","rb")
sfzlist = pickle.load(file) #load读出文件内容
file.close() #load将对象文件加载到内存
print(sfzlist)
- 文件数据操作
import os
#os.listdir 遍历所有文件或者文件夹
#返回list
filepath = r"文件路径"
filelist = os.listdir(filepath) #返回list,包含所有文件名
fileallpath = r"归并路径" #归并
fileall = open(filepath,"wb")#写入
for filename in filelist: #循环每一个文件名
filelitepath = filepath + "\\" + filename #新建更深层次路径
filer = open(filelitepath,"rb")
for line in filer: #每一行读取后写入
fileall.write(line)
filer.close()
fileall.close
#import os
#os.mkdir(r"filepath") #在一个路径下新建一个文件夹
num = 10 #切割数量
filesplitlist=[] #文件集合
for i in range(num):
filepath = r"文件路径" +str(num) + ".txt"
file = open(filepath,"wb")
filesplitlist.append(file)
fileallpath = r"归并路径" #
fileall = open(filepath,"rb")#读取
i = 0 #均匀切割需要的计数器
for line in fileall:
filesplitlist[i%num].write(line)
i += 1
fileall.close()
for i in range(num):
filesplitlist[i].close()
- 解决python代码中出现SyntaxError: Non-UTF-8 code starting with \xb8错误
在源码首段添加#coding=gbk
#coding=gbk
file = open(r"D:\Python代码\class12\明文.txt","r")
filejia = open(r"D:\Python代码\class12\密文.txt","w")
ch = True
while ch:
ch = file.read(1)
if ch: #读取
jiach = chr(ord(ch)+1) #凯撒密码加密移位
filejia.write(jiach)
file.close()
filejia.close()
解决方案引自:
(https://blog.csdn.net/weixin_40205234/article/details/86487798)
4. os常见目录方法
#coding=gbk
import os
#popen
mystr = os.popen("tasklist") #popen与system区别:都可以执行指令,但system不能获取返回值,popen返回一个文件对象
mystr = mystr.read() #read可以读取
print("hello",mystr) #输出对象
if mystr.find("QQ.exe") != -1:
print("发现QQ")
else:
print("QQ没有打开")
#文件夹操作
os.mkdir(r"路径") #创建文件夹必须一层一层地创建
os.rmdir(r"路径") #只能删除空文件夹
os.remove(r"路径") #删除文件
os.rename(r"路径",r"路径修改后") #文件或文件夹重命名
mylist = os.listdir(r"路径") #列举文件夹下的所有文件与文件夹
print(os.path.isfile(r"路径")) #判断是否是文件
print(os.path.isdir(r"路径")) #判断是否是文件夹
- 简单归并排序
def merge(mylist1,mylist2):
mylisttall = []
while len(mylist1) >0 and len(mylist2) >0:
if mylist1[0] <mylist2[0]:
mylisttall.append(mylist1[0])
del mylist1[0]
else:
mylisttall.append(mylist2[0])
del mylist2[0]
mylisttall.extend(mylist1)
mylisttall.extend(mylist2)
return mylisttall
mylist1 = [2,5,9,6,23,14]
mylist2 = [8,4,3]
mylist1.sort()
mylist2.sort()
print(merge(mylist1,mylist2))
- 全排列生成与暴力穷举密码
#coding=gbk
import itertools
'''
#制造全排列
#mylist = list(itertools.permutations([1,2,3,4],3)) #穷举三位的全排列,4个数的列表随机取出三个数排列
mylist = list(itertools.permutations(['A','B','C','D'],3))
print(mylist)
'''
#例如随机生成百度云四位密码
mylist = (["".join(x) for x in itertools.product("0123456789",repeat=6)])
#print(mylist)
#print(len(mylist))
file = open(r"D:\Python代码\class12\银行密码.txt","wb")
for i in mylist:
file.write((i+"\r\n").encode("utf-8"))
file.close()
- 生成器itertools
#coding = gbk
import itertools
mylist = ["".join(x) for x in itertools.product("012349",repeat=6)]
print(mylist)
print(type(mylist)) #生成器类型
print(next(mylist))
print(next(mylist))