Python基础编程常用模块汇总

3.8 <font color=red>json模块重点</font>

json模块是将满足条件的数据结构转化成特殊的字符串,并且也可以反序列化还原回去。

  • 不同语言都遵循的一种数据转化格式,即不同语言都使用的特殊字符串。(比如Python的一个列表[1, 2, 3]利用json转化成特殊的字符串,然后在编码成bytes发送给php的开发者,php的开发者就可以解码成特殊的字符串,然后在反解成原数组(列表): [1, 2, 3])
  • json序列化只支持部分Python数据结构:dict,list, tuple,str,int, float,True,False,None

<font color=red>用于网络传输,和文件写读:dumps(转化成str)loads(转回去)</font>

网络传输

1import json #导入json模块 2dic={1:'李文浩',2:'聂冰',3:'赵秋雨'} 3new_dic=json.dumps(dic,ensure_ascii=False) #将dict格式转化成str格式 4print(new_dic,type(new_dic)#{"1": "李文浩", "2": "聂冰", "3": "赵秋雨"} <class 'str'> 5old_b=old_dic.encode('utf-8') #将str模式的字典转化成byts类型编码 6 #模拟网络传输 7 new_b=old_b.decode('utf-8') #解码 8new_dic=json.loads(new_b) #转化成字典类型 9print(new_dic,type(new_dic))

文件写入

  • 单行写入

    import json dic={1:'李文浩',2:'聂冰',3:'赵秋雨'} with open('json测试.json',mode='w',encoding='utf-8')as f1: old_dic=json.dumps(dic,ensure_ascii=False) f1.write(old_dic) with open('json测试.json',encoding='utf-8')as f2: print(json.loads(f2.read()))

  • 多行写入

    dic1 = {'name':'oldboy1'} dic2 = {'name':'oldboy2'} dic3 = {'name':'oldboy3'} f = open('序列化',encoding='utf-8',mode='a') str1 = json.dumps(dic1) f.write(str1+'\n') str2 = json.dumps(dic2) f.write(str2+'\n') str3 = json.dumps(dic3) f.write(str3+'\n') f.close() ​ f = open('序列化',encoding='utf-8') for line in f: print(json.loads(line))

用于单个数据文件写读:dump、load

1import json 2f = open('json_file.json','w') 3dic = {'k1':'v1','k2':'v2','k3':'v3'} 4json.dump(dic,f) #dump方法接收一个文件句柄,直接将字典转换成json字符串写入文件 5f.close() 6# json文件也是文件,就是专门存储json字符串的文件。 7f = open('json_file.json') 8dic2 = json.load(f) #load方法接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回 9f.close() 10print(type(dic2),dic2)

3.9pickle模块

用于网络传输:dumps、loads

1import pickle 2dic={1:'李文浩',2:'聂冰',3:'赵秋雨'} 3str_dic=pickle.dumps(dic) 4print(str_dic) #bytes类型 5dic2=pickle.loads(str_dic) 6print(dic2) #dict类型

用于文件写读:dump、load

1dic = {(1,2):'oldboy',1:True,'set':{1,2,3}} 2f = open('pick序列化',mode='wb') 3pickle.dump(dic,f) 4f.close() 5with open('pick序列化',mode='wb') as f1: 6 pickle.dump(dic,f1)

3.9 <font color=red>os模块</font>

1os.getcwd() # 获取当前工作目录,即当前python脚本工作的目录路径 2os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd ** 3os.curdir 返回当前目录: ('.') ** 4os.pardir 获取当前目录的父目录字符串名:('..') **

和文件夹相关

1os.makedirs('dirname1/dirname2') #递归生成目录 *** 2os.removedirs('dirname1') #递归删除目录(目录里没有文件(为空)才可以删除) 3os.mkdir('绝对路径/相对路径') #创建一个文件夹 *** 4os.rmdir('绝对路径/相对路径') #删除文件夹*** 5os.listdir('dirname') $列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表打印

和文件相关

1os.remove() $删除一个文件 *** 2os.rename("oldname","newname") $重命名文件/目录 *** 3os.stat('path/filename') 获取文件/目录信息 **

path系列,和路径相关

1os.path.abspath(path) $返回path规范化的绝对路径 *** 2os.path.split(path) #将path分割成目录和文件名二元组返回 *** 3os.path.dirname('E:\Python项目')# E:\ 获取父级目录 4os.path.dirname(os.path.dirname(__file__))#获取父级目录的父级目录 :获取爷爷级目录 5os.path.basename('E:\Python项目')#Python项目 返回文件名 6os.path.exists(path) #查看文件夹或文件是否存在存在,返回True;如果path不存在,返回False 7os.path.isabs(path) #如果path是绝对路径,返回True ** 8os.path.isfile(path) #如果path是一个存在的文件,返回True。否则返回False *** 9os.path.isdir(path) #如果path是一个存在的目录,则返回True。否则返回False *** 10os.path.join('D:','s23','day20','随便')#路径拼接,第一个绝对路径之前的参数将被忽略 *** 11os.path.getatime(path) #返回path所指向的文件或者目录的最后访问时间 ** 12os.path.getmtime(path) #返回path所指向的文件或者目录的最后修改时间 ** 13os.path.getsize(path) #返回path的大小 *** 14print(__file__) $动态获取文件的绝对路径

4.0sys模块

1sys.argv 命令行参数List,第一个元素是程序本身路径 2sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys.exit(1) 3sys.version 获取Python解释程序的版本信息 4sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 *** 5sys.platform 返回操作系统平台名称

4.1 hashlib模块

普通加密

1import hashlib 2md5 = hashlib.md5() 3md5.update('要加密的字符串'.encode('utf-8')) 4print(md5.hexdigest())

加盐加密

  • 固定的盐

    import hashlib md5=hashlib.md5('盐'.encode('utf-8')) md5.update('要加密的字符串'.encode('utf-8')) print(md5.hexdigest())

  • 动态的盐

    username = '太白金星666' ret = hashlib.md5(username[::2].encode('utf-8')) # 针对于每个账户,每个账户的盐都不一样 ret.update('a'.encode('utf-8')) print(ret.hexdigest())

文件的一致性校验

1def md5_file(path): 2 ret = hashlib.md5() 3 with open(path,mode='rb') as f1: 4 while 1: 5 content = f1.read(1024) 6 if content: 7 ret.update(content) 8 else: 9 return ret.hexdigest() 10print(md5_file(r'E:\Python项目\python-3.7.4rc1-embed-win32.zip')) 11

4.2time 模块

1#导入时间模块 2>>>import time 3 4#时间戳 5>>>time.time() 61500875844.800804 7 8#时间字符串 9>>>time.strftime("%Y-%m-%d %X") 10'2017-07-24 13:54:37' 11>>>time.strftime("%Y-%m-%d %H-%M-%S") 12'2017-07-24 13-55-04' 13 14#时间元组:localtime将一个时间戳转换为当前时区的struct_time 15time.localtime() 16time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24, 17          tm_hour=13, tm_min=59, tm_sec=37, 18 tm_wday=0, tm_yday=205, tm_isdst=0)

4.3random模块

1>>> import random 2#随机小数 3>>> random.random() # 大于0且小于1之间的小数 40.7664338663654585 5>>> random.uniform(1,3) #大于1小于3的小数 61.6270147180533838 7#恒富:发红包 8 9#随机整数 10>>> random.randint(1,5) # 大于等于1且小于等于5之间的整数 11>>> random.randrange(1,10,2) # 大于等于1且小于10之间的奇数 12 13 14#随机选择一个返回 15>>> random.choice([1,'23',[4,5]]) # #1或者23或者[4,5] 16#随机选择多个返回,返回的个数为函数的第二个参数 17>>> random.sample([1,'23',[4,5]],2) # #列表元素任意2个组合 18[[4, 5], '23'] 19 20 21#打乱列表顺序 22>>> item=[1,3,5,7,9] 23>>> random.shuffle(item) # 打乱次序 24>>> item 25[5, 1, 3, 7, 9] 26>>> random.shuffle(item) 27>>> item 28[5, 9, 7, 1, 3]
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

一篇文章带你了解JavaScript日期

日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang