zoukankan      html  css  js  c++  java
  • 常用模块整理

    random模块

    小数部分:

    1.random.random()        大于0且小于1之间的小数,取不到边界

    2.random.uniform(0,m)     大于0小于m的小数,取不到边界

    整数部分:

    3.random.randint(1,10)     大于等于1小于等于10的整数,可取边界

    4.random.randrange(1,10,2) 大于等于1小于10的整数,不取右边界

    列表随机:

    5.random.choice(list)       随机返回列表中一个元素

    6.random.sample(list,3)     随机返回列表中3个元素

    7.random.shuffle(list)       随机给列表排序

    time模块

    组成: 时间戳时间,结构化时间,格式化时间

    1) 时间戳时间: 又称格林威治时间,float数据类型,主要是给机器使用的时间.

       time.time() 用来获取截至目前一共用时多少秒,是从1970.1.1开始计时的.

    2) 结构化时间: 时间对象,上下两种格式的中间形态.

       print(time.localtime()) 理解为:把时间戳时间经过localtime()换算后的初级形态,供格式化时间

       时来使用.  其结构是个元组,包含有年月日等一些信息.

    3) 格式化时间: 又称字符串时间,str数据类型,主要是给人来使用的时间.

       time.strftime(%Y-%m-%d) 用来获取当前时间,并指定了显示格式

    4) 三者之间换算:

       时间戳time.localtime结构化时间time.strftime格式化时间

       格式化时间time.strptime结构化时间mktime时间戳

    5) 小练习: 计算本月1号的时间戳

       re=time.strftime(%Y-%m-1)     获取到当月1号的格式化时间

       struct_time=time.strptime(re)   得到当月1号的结构化时间

       print(time.mktime(struct_time)) 得到当月1号的时间戳时间

    sys模块

    作用: python解释器打交道的模块

    常用命令: sys.path:    用来获取当前执行文件的所有路径

              sys.modules:  用来查看当前加载的所有模块信息

              sys.platform:   用来获取当前的操作系统位数信息,不准

                   sys.exit():   放在程序中间,用来强制解释器退出,不执行后续代码的.

                    sys.argv:   会生成个列表,并把执行这个文件时,写在python命令后的所有东西全部作为

                                     列表元素添加进去.以空格隔开的为一个元素.

    用处举例: cmd窗口运行时,一次性把程序需要的所有元素都输入,让其自动运行

              name = sys.argv[1]

              pwd = sys.argv[2]

              if name == 'alex' and pwd == '3714':

                    print('执行以下代码')

             else:

                    exit()

      

    os模块:

    作用: 用来和操作系统打交道的

     os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径

     os.chdir(文件路径) 改变当前脚本工作目录,相当于shell下的cd

     os.curdir 返回当前目录,等同于.   os.pardir() 获取当前目录的父目录字符串,等同于..

     os.makedirs(名称1,名称2,名称3...) 可一次生成多层递归目录

     os.mkdir(名称1) 可生成单级目录,如名称1存在则报错

     os.removedirs(名称1,名称2,名称3..) 若目录为空,则删除,并递归到上一级,还为空,接着删,以此类推

     os.rmdir(名称1) 删除单级目录,若目录不为空则无法删除

     os.listdir(目录名) 列出指定目录下的一级内容,包含隐藏文件,并以列表形式打印.

     os.remove(路径) 删除一个文件  os.rename(‘新文件’,’原文件’) 更改新文件名为原文件名.

     os.stat(path/filename) 获取文件/目录信息

     os.sep 输出操作系统特定的路径分隔符,  win\    linux/

     os.linesep 输出操作系统使用的行终止符,win:\r\n  linux:\n

     os.pathsep 输出用于分割文件路径的字符, win下是; linux下是:

     os.name 输出字符串指示当前使用平台, ’nt’代表win  ‘posix’代表linux

     os.system(bash command) 运行shell命令,直接显示

     os.popen(bash command).read() 运行shell命令,获取执行结果

     os.environ 获取系统环境变量

     os.path.abspath(path) 返回path规范化绝对路径

     os.path.split(path) path分割成目录和文件名的元组返回

     os.path.dirname(path) 返回path内最后一个文件夹/包名字,相当于os.path.split(path)的第一个元素.

     os.path.basename(path) 返回path内最后一个文件名,如果path是以\ / 结尾,则返回个空值,相当于是

                                              os.path.split(path)的第二个元素.

     os.path.exists(path) 如果path存在,返回True; 不存在则返回False

     os.path.isabs(path) 如果path是绝对路径,则返回True

     os.path.isfile(path) 如果path是一个存在的文件,则返回True.否则返回False

     os.path.isdir(path) 如果path是一个存在的目录,则返回True. 否则返回False

     os.path.join()  将多个路径组合后返回,最后一个绝对路径之前的参数将被忽略

     os.path.getatime(path) 返回path所指向的文件或者目录的最后访问时间

     os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间

     os.path.getsize(path) 返回path的大小

    序列化模块

    包含三个模块:  json  pickle  shelve

    1) str_dic=json.dumps(dic) 将字典转为字符串形式

        json.loads(str_dic)      将字符串形式的字典转为字典形式.

        json.dump(dic,f)     json.load(f)  用于文件操作.

     具体用法如下:

        with open(‘文件名’,mode=’w’,encoding=’utf-8’) as f:

                 json.dump(dic,f)   可以将字典形式转为字符串并写入文件中

        with open(‘文件名’,mode=’r’,encoding=’utf-8’) as f1:

                 print(json.load(f))   可以将文件内的字符串形式的字典读出,并自动转为字典形式.

     限制: json格式的key必须是个字符串数据类型,如果key数字类型,那么dump后会强行转为字符串类型的数字; 字典中value是个元组时,

     也会强行把元组转为列表,不可逆;  操作文件时,可一次性dump进多个数据,但不能直接一次load出来,解决办法为,dump完一个数据就

     用write写入,并加入换行,然后取的时候用for循环取出一个load一个;  dumps默认不支持中文,可通过修改参数的办法使其正常显示.

       dic是个包含中文的字典

       ret = json.dumps(dic,ensure_ascii = False)   序列化带中文字典为一个通用类型

       print(ret)

       dic_new = json.loads(ret)    反序列化.

       print(dic_new)

     最后,set集合也是不能被dumpdumps.

    2) pickle模块: 用法同json命令,pickle.dump/pickle.dumps/pickle.load/pickle.loads这四种.

        pickle.dumps得到的结果是bytes类型,要求dump时也得是b模式打开文件,其存的内容也全部

        都是bytes类型,虽然看不懂,但是通过load出来后的格式和之前保持一致.

        注意,pickle来序列化一个类的对象时,要想load出对象的内容,必须要求该对象的类要存在,

         不然会报错的.

        pickle可一次写入多个数据,且能一次都读出来,用法如下:

        with open('新文件','wb') as f:

              pickle.dump({'k1':'v1'}, f)   

              pickle.dump({'k11':'v1'}, f)

              pickle.dump({'k11':'v1'}, f)     一次写入多行

        with open('新文件','rb') as f:

               while True:

                     try:

                          print(pickle.load(f))

              except EOFError:

                          break

    3) shelve模块: 也是用来操作文件的;  用法举例:

          f = shelve.open('文件')                 会创建三个文件赋值给f

          f['key'] = {'k1':(1,2,3),'k2':'v2'}    一次给三个文件都写入key:value,是个字典

          f.close()

          f = shelve.open('文件')   

          content = f['key']              key来取对应的value

          f.close()

          print(content)

    hashlib 模块

    摘要算法模块, 作用:能够把一个字符串数据类型的变量转换成一个定长的,密文的字符串,字符串里的每个字符都是一个十六进制数字;对于同一个字符串,不管这个字符串有多长,只要是相同的,无论在任何环境下,什么时候执行,执行多少次,在任何语言中,只要使用相同的算法手段得到的结果永远是相同的,当字符串不同时,得到的结果一定不同.  常用的摘要算法有两个:md5sha1

    md5: 算法相对简单,效率快,得到的是个32位的字符串,每个字符都是一个十六进制数

    sha1: 算法相对复杂,效率低,得到的是个40位的字符串,每个字符也都是个十六进制数

    这两个算法的用法和命令都一样,这里以md5来说明,其有两个命令或者说方法:updatehexdigest

    y=hashlib.md5()                          实列化一个对象,          得到一个md5加工厂y

    y.update(字符串.encode(‘utf-8))  对象调方法得到加密后的内容,  给加工厂送物料

    res=y.hexdigest()         对象调方法读出加密后的内容赋值给res,   加工厂给你返回加工结果

    print(res)                    打印输出显示出密文

    以上为摘要算法的基本用法,有可能用撞库方式获得密文对应的内容.在我们可以获得用户输入的前提下,比如想升级破解的

    难度,可用加盐的形式,提高密文质量.(一般现实中用户名和密码都相同的情况不会发生,各种平台也会限制用户名不得重复,

    而获得更高的保密性,示列用法如下:)

    name=input(‘输入用户名’)    pwd=input(‘输入密码’)

    我们要加密的是用户密码, 用户名不会重复,此时可用用户名作为盐来提升密码的破解难度

    y=hashlib.md5(name.encode(‘utf-8’))   md5后括号内加入的称为盐,注意也需要进行解码

    y.update(pwd.encode(‘utf-8))         用加盐后的md5来调update方法把密码进行加密

    res=y.hexdigest()                    读取加密后的密文

    print(res)  打印呈现出来.  猜测,加盐的原理相当于是给要加密的字符串又拼接上了一段字符

    用法举例: 通过对比两个文件的md5密文,可判定两个文件是否相同或判断下载的文件有么有丢包

        1.y=hashlib.md5()

           y.update(‘hello,world’.encode(utf-8))

          print(y.hexdigest())

    2.y1=hashlib.md5()

          y1.update(‘hello,’.encode(utf-8))

          y1.update(‘world’.encode(utf-8))

          print(y1.hexdigest())

    此时打印出的两个md5密文是一样的,用这个原理我们就可以对比两个远大于系统内存的文件是否一致,操作方法为分别循环两个文件,取出适量的大小分别做摘要算法,都完成后输出整体的算法结果来做比较,密文相同则认为这两个文件一致.

  • 相关阅读:
    Atitit。D&D drag&drop拖拽功能c#.net java swing的对比与实现总结
    Atitit . 编程模型的变革总结
    Atitit.mysql oracle with as模式临时表模式 CTE 语句的使用,减少子查询的结构性 mssql sql server..
    Atitit.编程语言的主要的种类and趋势 逻辑式语言..函数式语言...命令式语言
    atitit.编程语言会形成进化树--哪些特性会繁荣??通才还是专才的选型 现代编程语言的特性总结
    Atitit.多媒体区----web视频格式的选择总结
    Atitit.web 视频播放器classid clsid 大总结quicktime,vlc 1. Classid的用处。用来指定播放器 1 2. <object> 标签用于包含对象,比如图像、音
    Atitit.部分错误 设计模式,异常处理框架atiPartErr 的总结
    Atitit.js javascript异常处理机制与java异常的转换 多重catc hDWR 环境 .js exception process Vob7
    atitit.判断时间重叠方法总结 java c++ c#.net js php
  • 原文地址:https://www.cnblogs.com/quzq/p/9465059.html
Copyright © 2011-2022 走看看