常用模块
json # 序列化 #将内存的数据存到硬盘中,中间的格式,可以被多种语言识别,跨平台交互数据 #json 可以将字典之类的数据类型存到字典中 import json dic = {"a":1} res2 = str(dic) res = json.dumps(dic) print(res,type(res)) print(res2,type(res2)) #{"a": 1} <class 'str'> # {'a': 1} <class 'str'> # python None = null #json 只识别 "",不识别'' # user= {'name':'zym','age':25} # with open("ccc.json",'w',encoding='utf-8 ') as f : # f.write(json.dumps(user)) # # #一步到位的方法 # json.dump(user,open('ddd.json','w',encoding='utf-8')) # 反序列化 import json # with open('ddd.json','r',encoding='utf-8') as f1: # user2 = json.loads(f1.read()) # print(user2,type(user2)) # print(user2["name"]) # 一步到位的方法 # user2 = json.load(open('ddd.json','r',encoding='utf-8')) # print(user2['name'])
#random 随机模块 import random print(random.random()) print(random.choice([2,'23',[4,5]])) print(random.randint(1,3)) print(random.randrange(1,3)) print(random.sample([1,2,3,['zy']],3)) print(random.uniform(1,2)) item = [1,3,5,7,9] random.shuffle(item) print(item) #生成随机验证码 def make_code(n): res = '' for i in range(n): b = str(random.randint(0,9)) a = chr(random.randint(65,90)) c =random.choice([a,b]) res +=c return res print(make_code(6))
文件操作模块shutil import shutil shutil.copyfileobj(open('aaa','r'),open('bbb','w')) #将文件内容拷贝到另一个文件中 shutil.copyfile('f1.txt','f2.txt') #拷贝文件内容,无需打开 shutil.copymode('f1.txt','f2.txt') #仅拷贝权限,内容,组,用户均不变,目标文件必须存在 shutil.copystat('f1.txt','f2.txt') #仅拷贝信息,包括:mode bits,mtime,flags,目标文件必须存在 shutil.copy('f1.txt','f2.txt') #拷贝文件和权限,相当于linux cp -a shutil.copy2('f1.txt','f2.txt') #拷贝文件和状态信息 shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*')) #目标目录不能存在,注意对folder2目录父级目录要有可写权限,ignore的意思是排除 import shutil shutil.copytree('f1', 'f2', symlinks=True, ignore=shutil.ignore_patterns('*.pyc', 'tmp*')) #symlinks =True 拷贝成软链接 ''' 通常的拷贝都把软连接拷贝成硬链接,即对待软连接来说,创建新的文件 ''' #shutil.rmtree(path[, ignore_errors[, onerror]]) #递归的去删除文件 shutil.rmtree('aaaa') ####### linux中的rm -rf命令,及其危险 shutil.move() #递归的移动文件 # shutil.make_archive(base_name, format,...) # # 创建压缩包并返回文件路径,例如:zip、tar # # 创建压缩包并返回文件路径,例如:zip、tar # # base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径, # 如 data_bak =>保存至当前路径 # 如:/tmp/data_bak =>保存至/tmp/ # format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar” # root_dir: 要压缩的文件夹路径(默认当前目录) # owner: 用户,默认当前用户 # group: 组,默认当前组 # logger: 用于记录日志,通常是logging.Logger对象 # 将 /data 下的文件打包放置当前程序目录 # ret = shutil.make_archive("data_bak", 'gztar', root_dir='/data') # 将 /data下的文件打包放置 /tmp/目录 # ret = shutil.make_archive("/tmp/data_bak", 'gztar', root_dir='/data') # shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的,详细: import zipfile shutil.make_archive('bak','gztar',root_dir=r"你要打包的文件目录") #相当于 tar cvfz bak /root import tarfile t = tarfile.open('bak.tar.gz') #得到一个对象 t.extractall('你想要解压到的路径') t.close()
sys模块的进图条 #进度条 # [# ] # [## ] # [### ] # [#### ] # print('#'*1) # print('#'*2) # print('#'*3) # print('#'*4) # print('#'*5) # import sys # import time # print('[%s]' %'#') # print('[%s]' %'#') # print('[%s]' %'#') # print('[%s]' %'#') # print('[%s]' %'#'*10) # print('[%-15s]'%'###') # print(('[%%-%ss]' % 50 )%'###') # print('%s%%' %100) # print(('[%%-%ss]'% 50 )%'###','%s%%' %100) # # a percent # # # # # # # # while True: # print(('[%%-%ss]' % 50) % '###', '%s%%' % 100,end='') # time.sleep(0.05) #打印不换行,end = '',覆盖打印即将光标返回开头\r # import time # def progress(percent,width = 50): # if percent>1: # percent = 1 # print(('\r[%%-%ds]'%width)%('#'*int(percent*width)),end='') # # recv_size = 0 # total = 10241 # # while recv_size < total: # time.sleep(0.1) # recv_size+=1024 # percent = recv_size/total # progress(percent) #进度条 print("[%s]" % '#') print("[%s]" % '##') print("[%s]" % '###') #先考虑将[]设置为指定的宽度,由于是左对齐 print("[%-50s]" % '###') #并且不能写死了 print(('[%%-%ds]' %50)) #[%-50s] print(('[%%-%ds]' %50) % "###") print(('[%%-%ds]' %50) % ("#"*30)) #这时候30,50都是可以被替换掉的,既可以被传参 # “#”的数量是根据百分比来的,例如下载包,用包的现在下载的大小除包的总大小,来得到#的数量 #先定义一个函数,用户自定义[]的宽度 import time def progress(percent,width = 50): if percent > 1: percent =1 # 需要进行判断,否则会出现大于100%的情况 show_t = ('[%%-%ds]' %width) % ("#"*int(width*percent)) #\r 将光标移动到开头 print( '\r%s %d%%' %(show_t,int(100*percent)),end='') current_size = 0 total_size = 102410 while current_size < total_size: time.sleep(0.1) #需要睡眠,要不然看不到打印的效果,因为速度太快 current_size += 1024 percent = current_size/total_size progress(current_size/total_size)