ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第二篇(下)常用模块

2021-05-01 19:04:09  阅读:216  来源: 互联网

标签:常用 res json 模块 print import foo 第二篇


  • 模块
      1 '''
      2 1、什么是模块?
      3     模块就是一系列功能的集合体,分为三大类
      4         I:内置的模块
      5         II:第三方的模块
      6         III:自定义的模块
      7             一个python文件本身就一个模块,文件名m.py,模块名叫m
      8 
      9             ps:模块有四种形式
     10               1 使用python编写的.py文件
     11 
     12               2 已被编译为共享库或DLL的C或C++扩展
     13             
     14               3 把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件夹称之为包)
     15             
     16               4 使用C编写并链接到python解释器的内置模块
     17                         
     18 2、为何有用模块
     19     I:内置与第三的模块拿来就用,无需定义,这种拿来主义,可以极大地提升自己的开发效率
     20     II:自定义的模块
     21         可以将程序的各部分功能提取出来放到一模块中为大家共享使用
     22         好处是减少了代码冗余,程序组织结构更加清晰
     23         
     24 
     25 3、如何用模块
     26 '''
     27 
     28 y=333
     29 z=444
     30 import foo
     31 # 1、首次导入模块会发生3件事
     32 # 1、执行foo.py
     33 # 2、产生foo.py的名称空间,将foo.py运行过程中产生的名字都丢到foo的名称空间中
     34 # 3、在当前文件中产生的有一个名字foo,该名字指向2中产生的名称空间
     35 
     36 # 之后的导入,都是直接引用首次导入产生的foo.py名称空间,不会重复执行代码
     37 # import foo
     38 # import foo
     39 # import foo
     40 # import foo
     41 
     42 
     43 # 2、引用:
     44 # print(foo.x)
     45 # print(foo.get)
     46 # print(foo.change)
     47 # 强调1:模块名.名字,是指名道姓地问某一个模块要名字对应的值,不会与当前名称空间中的名字发生冲突
     48 # x=1111111111111
     49 # print(x)
     50 # print(foo.x)
     51 
     52 # 强调2:无论是查看还是修改操作的都是模块本身,与调用位置无关
     53 # import foo
     54 #
     55 # x=3333333333
     56 # # foo.get()
     57 #
     58 # foo.change()
     59 # print(x)
     60 #
     61 # print(foo.x)
     62 # foo.get()
     63 
     64 
     65 
     66 
     67 # 3、可以以逗号为分隔符在一行导入多个模块
     68 # 建议如下所示导入多个模块
     69 # import time
     70 # import foo
     71 # import m
     72 
     73 # 不建议在一行同时导入多个模块
     74 import time,foo,m
     75 
     76 
     77 # 4、导入模块的规范
     78 #I. python内置模块
     79 #II. 第三方模块
     80 #III. 程序员自定义模块
     81 
     82 # import time
     83 # import sys
     84 #
     85 # import 第三方1
     86 # import 第三方2
     87 #
     88 # import 自定义模块1
     89 # import 自定义模块2
     90 # import 自定义模块3
     91 
     92 
     93 # 5、import 。。。 as 。。。
     94 # import foo as f # f=foo
     95 # f.get()
     96 
     97 
     98 # import abcdefgadfadfas
     99 # #
    100 # # abcdefgadfadfas.f1
    101 # # abcdefgadfadfas.f2
    102 # # abcdefgadfadfas.f3
    103 
    104 
    105 # import abcdefgadfadfas as mmm
    106 #
    107 # mmm.f1
    108 # mmm.f2
    109 # mmm.f3
    110 
    111 
    112 #6、模块是第一类对象
    113 import foo
    114 
    115 #7、自定义模块的命名应该采用纯小写+下划线的风格
    116 
    117 
    118 #8、可以在函数内导入模块
    119 def func():
    120     import foo
    模块
      1 1# 一个python文件有两种用途
      2 # 1、被当成程序运行
      3 # 2、被当做模块导入
      4 
      5 2# impot导入模块在使用时必须加前缀"模块."
      6 # 优点:肯定不会与当前名称空间中的名字冲突
      7 # 缺点:加前缀显得麻烦
      8 
      9 # from ... import ...导入也发生了三件事
     10 # 1、产一个模块的名称空间
     11 # 2、运行foo.py将运行过程中产生的名字都丢到模块的名称空间去
     12 # 3、在当前名称空间拿到一个名字,该名字与模块名称空间中的某一个内存地址
     13 # from foo import x # x=模块foo中值0的内存地址
     14 # from foo import get
     15 # from foo import change
     16 
     17 # print(x)
     18 # print(get)
     19 # print(change)
     20 # x=333333333
     21 # print(x)
     22 # get()
     23 # change()
     24 # get()
     25 
     26 # print(x)
     27 # from foo import x # x=新地址
     28 # print(x)
     29 
     30 # from...impot...导入模块在使用时不用加前缀
     31 # 优点:代码更精简
     32 # 缺点:容易与当前名称空间混淆
     33 # from foo import x # x=模块foo中值1的内存地址
     34 # x=1111
     35 
     36 
     37 # 一行导入多个名字(不推荐)
     38 # from foo import x,get,change
     39 
     40 # *:导入模块中的所有名字
     41 # name='egon'
     42 # from foo import *
     43 # print(name)
     44 
     45 from socket import *
     46 
     47 
     48 # 了解:__all__
     49 # from foo import *
     50 # print(x)
     51 # print(get)
     52 # print(change)
     53 
     54 
     55 # 起别名
     56 from foo import get as g
     57 print(g)
     58 
     59 3模块的搜索路径
     60 # 无论是import还是from...import在导入模块时都涉及到查找问题
     61 # 优先级:
     62 # 1、内存(内置模块)
     63 # 2、硬盘:按照sys.path中存放的文件的顺序依次查找要导入的模块
     64 
     65 # import sys
     66 # 值为一个列表,存放了一系列的对文件夹
     67 # 其中第一个文件夹是当前执行文件所在的文件夹
     68 # print(sys.path)
     69 
     70 # import foo # 内存中已经有foo了
     71 # foo.say()
     72 #
     73 # import time
     74 # time.sleep(10)
     75 #
     76 # import foo
     77 # foo.say()
     78 
     79 
     80 # 了解:sys.modules查看已经加载到内存中的模块
     81 import sys
     82 # import foo # foo=模块的内存地址
     83 # del foo
     84 
     85 # def func():
     86 #     import foo # foo=模块的内存地址
     87 #
     88 # func()
     89 #
     90 # # print('foo' in sys.modules)
     91 # print(sys.modules)
     92 
     93 
     94 import sys
     95 # 找foo.py就把foo.py的文件夹添加到环境变量中
     96 sys.path.append(r'/Users/linhaifeng/PycharmProjects/s14/day21/aa')
     97 # import foo
     98 # foo.say()
     99 
    100 from foo import say
    模块导入
     1 def register(name:"必须传入名字傻叉",age:1111111,hobbbies:"必须传入爱好元组")->"返回的是整型":
     2  print(name)
     3  print(age)
     4  print(hobbbies)
     5  return 111
     6 
     7 # register(1,'aaa',[1,])
     8 # res=register('egon',18,('play','music'))
     9 # res=register('egon',19,(1,2,3))
    10 
    11 print(register.__annotations__)  #{'name': '必须传入名字傻叉', 'age': 1111111, 'hobbbies': '必须传入爱好元组', 'return': '返回的是整型'}
    函数的类型提示
     1 '''
     2 1、包就是一个包含有__init__.py文件的文件夹
     3     
     4     
     5 2、为何要有包
     6     包的本质是模块的模块的一种形式,包是用来被当做模块导入
     7 '''
     8 
     9 #1、产生一个名称空间
    10 #2、运行包下的__init__.py文件,将运行过程中产生的名字都丢到1的名称空间中
    11 #3、在当前执行文件的名称空间中拿到一个名字mmm,mmm指向1的名称空间
    12 # import mmm
    13 # print(mmm.x)
    14 # print(mmm.y)
    15 # mmm.say()
    16 
    17 # from mmm import x
    18 
    19 
    20 # 模块的使用者:egon老湿
    21 
    22 # 环境变量是以执行文件为准备的,所有的被导入的模块或者说后续的其他文件引用
    23 # 的sys.path都是参照执行文件的sys.path
    24 import sys
    25 sys.path.append('/aaaaaaaaaaaaaaaaaaaaaaaaaa')
    26 # print(sys.path)
    27 
    28 sys.path.append(r'/Users/linhaifeng/PycharmProjects/s14/day21/aa')
    29 
    30 
    31 # import foo # foo下__init__.py
    32 # #
    33 # #
    34 # foo.f1()
    35 # foo.f2()
    36 # foo.f3()
    37 
    38 # from foo import f1,f2,f3,f4
    39 
    40 # f1()
    41 # f2()
    42 # f3()
    43 # f4()
    44 
    45 # import foo
    46 # foo.f4()
    47 
    48 # 强调:
    49 # 1.关于包相关的导入语句也分为import和from ... import ...
    50 # 两种,但是无论哪种,无论在什么位置,在导入时都必须遵循一个原则:
    51 # 凡是在导入时带点的,点的左边都必须是一个包,否则非法。
    52 # 可以带有一连串的点,如import 顶级包.子包.子模块,但都必须遵循这个原则。但对于导入后,在使用时就没有这种限制了,点的左边可以是包,模块,函数,类(它们都可以用点的方式调用自己的属性)。
    53 # 例如:
    54 # from a.b.c.d.e.f import xxx
    55 # import a.b.c.d.e.f
    56 # 其中a、b、c、d、e 都必须是包
    57 
    58 
    59 # 2、包A和包B下有同名模块也不会冲突,如A.a与B.a来自俩个命名空间
    60 #
    61 # 3、import导入文件时,产生名称空间中的名字来源于文件,
    62 # import 包,产生的名称空间的名字同样来源于文件,即包下的__init__.py,导入包本质就是在导入该文件
    63 
    64 
    65 # import foo
    66 # # print(foo.f1)
    67 # # print(foo.f2)
    68 # # print(foo.f3)
    69 # # print(foo.f4)
    70 #
    71 # foo.f4()
    72 
    73 # from foo import *
    74 # print(f1)
    75 # print(f2)
    76 # print(f3)
    77 # print(f4)
    包的使用

     

  • 常用模块1
     1 # 时间模块优先掌握的操作
     2 #一:time
     3 import time
     4 
     5 # 时间分为三种格式:
     6 # 1、时间戳:从1970年到现在经过的秒数
     7 #    作用:用于时间间隔的计算
     8 
     9 # print(time.time())
    10 
    11 # 2、按照某种格式显示的时间:2020-03-30 11:11:11
    12 #    作用:用于展示时间
    13 
    14 # print(time.strftime('%Y-%m-%d %H:%M:%S %p'))
    15 # print(time.strftime('%Y-%m-%d %X'))
    16 
    17 # 3、结构化的时间
    18 #    作用:用于单独获取时间的某一部分
    19 
    20 # res=time.localtime()
    21 # print(res)
    22 # print(res.tm_year)
    23 # print(res.tm_yday)
    24 
    25 #二:datetime
    26 import datetime
    27 
    28 # print(datetime.datetime.now())
    29 # print(datetime.datetime.now() + datetime.timedelta(days=3))
    30 # print(datetime.datetime.now() + datetime.timedelta(weeks=1))
    31 
    32 
    33 
    34 # 时间模块需要掌握的操作
    35 # 1、时间格式的转换
    36 # struct_time->时间戳
    37 import time
    38 # s_time=time.localtime()
    39 # print(time.mktime(s_time))
    40 
    41 # 时间戳->struct_time
    42 # tp_time=time.time()
    43 # print(time.localtime(tp_time))
    44 
    45 # 补充:世界标准时间与本地时间
    46 # print(time.localtime())
    47 # print(time.gmtime()) # 世界标准时间,了解
    48 # print(time.localtime(333333333))
    49 # print(time.gmtime(333333333))
    50 
    51 
    52 # struct_time->格式化的字符串形式的时间
    53 # s_time=time.localtime()
    54 # print(time.strftime('%Y-%m-%d %H:%M:%S',s_time))
    55 
    56 # print(time.strptime('1988-03-03 11:11:11','%Y-%m-%d %H:%M:%S'))
    57 
    58 
    59 # !!!真正需要掌握的只有一条:format string<------>timestamp
    60 # '1988-03-03 11:11:11'+7
    61 
    62 # format string--->struct_time--->timestamp
    63 # struct_time=time.strptime('1988-03-03 11:11:11','%Y-%m-%d %H:%M:%S')
    64 # timestamp=time.mktime(struct_time)+7*86400
    65 # print(timestamp)
    66 
    67 # format string<---struct_time<---timestamp
    68 # res=time.strftime('%Y-%m-%d %X',time.localtime(timestamp))
    69 # print(res)
    70 
    71 # time.sleep(3)
    72 
    73 # 了解知识
    74 # import time
    75 # print(time.asctime())
    76 
    77 
    78 import datetime
    79 # print(datetime.datetime.now())
    80 # print(datetime.datetime.utcnow())
    81 
    82 print(datetime.datetime.fromtimestamp(333333))
    时间模块
     1 import random
     2 
     3 # print(random.random()) #(0,1)----float    大于0且小于1之间的小数
     4 # print(random.randint(1, 3))  # [1,3]    大于等于1且小于等于3之间的整数
     5 
     6 # print(random.randrange(1, 3))  # [1,3)    大于等于1且小于3之间的整数
     7 #
     8 # print(random.choice([111, 'aaa', [4, 5]]))  # 1或者23或者[4,5]
     9 #
    10 # print(random.sample([111, 'aaa', 'ccc','ddd'],2))  # 列表元素任意2个组合
    11 #
    12 # print(random.uniform(1, 3))  # 大于1小于3的小数,如1.927109612082716
    13 #
    14 # item = [1, 3, 5, 7, 9]
    15 # random.shuffle(item)  # 打乱item的顺序,相当于"洗牌"
    16 # print(item)
    17 
    18 # 应用:随机验证码
    19 
    20 # import random
    21 #
    22 # res=''
    23 # for i in range(6):
    24 #     从26大写字母中随机取出一个=chr(random.randint(65,90))
    25 #     从10个数字中随机取出一个=str(random.randint(0,9))
    26 #
    27 #     随机字符=random.choice([从26大写字母中随机取出一个,从10个数字中随机取出一个])
    28 #     res+=随机字符
    29 
    30 
    31 import random
    32 
    33 def make_code(size=4):
    34     res=''
    35     for i in range(size):
    36         s1=chr(random.randint(65,90))
    37         s2=str(random.randint(0,9))
    38         res+=random.choice([s1,s2])
    39     return res
    40 
    41 print(make_code(6))
    random模块
     1 import os
     2 
     3 # 获取某一个文件夹下所有的子文件以及子文件夹的名字
     4 # res=os.listdir('.')
     5 # print(res)
     6 #
     7 #
     8 # size=os.path.getsize(r'/Users/linhaifeng/PycharmProjects/s14/day22/01 时间模块.py')
     9 # print(size)
    10 
    11 
    12 
    13 # os.remove()  删除一个文件
    14 # os.rename("oldname","newname")  重命名文件/目录
    15 
    16 
    17 
    18 # 应用程序----》"ls /"
    19 # os.system("ls /")
    20 
    21 # 规定:key与value必须都为字符串
    22 
    23 # os.environ['aaaaaaaaaa']='111'
    24 # print(os.environ)
    25 
    26 
    27 # print(os.path.dirname(r'/a/b/c/d.txt'))
    28 # print(os.path.basename(r'/a/b/c/d.txt'))
    29 
    30 
    31 # print(os.path.isfile(r'笔记.txt'))
    32 # print(os.path.isfile(r'aaa'))
    33 # print(os.path.isdir(r'aaa'))
    34 
    35 # print(os.path.join('a','/','b','c','d'))
    36 
    37 
    38 
    39 
    40 # 推荐用这种
    41 BASE_DIR=os.path.dirname(os.path.dirname(__file__))
    42 # print(BASE_DIR)
    43 
    44 
    45 # BASE_DIR=os.path.normpath(os.path.join(
    46 #     __file__,
    47 #     '..',
    48 #     '..'
    49 # ))
    50 # print(BASE_DIR)
    51 
    52 # 在python3.5之后,推出了一个新的模块pathlib
    53 from pathlib import Path
    54 
    55 # res = Path(__file__).parent.parent
    56 # print(res)
    57 
    58 
    59 # res=Path('/a/b/c') / 'd/e.txt'
    60 # print(res)
    61 
    62 # print(res.resolve())
    os模块
     1 import sys
     2 
     3 # python3.8 run.py 1 2 3
     4 # sys.argv获取的是解释器后参数值
     5 # print(sys.argv)
     6 
     7 # src_file=input('源文件路径: ').strip()
     8 # dst_file=input('目标文件路径: ').strip()
     9 #
    10 # src_file=sys.argv[1]
    11 # dst_file=sys.argv[2]
    12 # # 判断
    13 #
    14 # with open(r'%s' %src_file,mode='rb') as read_f,\
    15 #     open(r'%s' %dst_file,mode='wb') as write_f:
    16 #     for line in read_f:
    17 #         write_f.write(line)
    18 
    19 # python3.8 run.py src_file dst_file
    20 
    21 
    22 # print('[%-50s]' %'#')
    23 # print('[%-50s]' %'##')
    24 # print('[%-50s]' %'###')
    25 
    26 
    27 
    28 # import time
    29 #
    30 # res=''
    31 # for i in range(50):
    32 #     res+='#'
    33 #     time.sleep(0.5)
    34 #     print('\r[%-50s]' % res,end='')
    35 
    36 
    37 import time
    38 
    39 
    40 def progress(percent):
    41     if percent > 1:
    42         percent = 1
    43     res = int(50 * percent) * '#'
    44     print('\r[%-50s] %d%%' % (res, int(100 * percent)), end='')
    45 
    46 recv_size=0
    47 total_size=1025011
    48 
    49 while recv_size < total_size:
    50     time.sleep(0.01) # 下载了1024个字节的数据
    51 
    52     recv_size+=1024 # recv_size=2048
    53 
    54     # 打印进度条
    55     # print(recv_size)
    56     percent = recv_size / total_size  # 1024 / 333333
    57     progress(percent)
    sys&打印进度条
  • 常用模块2
      1 # 1、什么是序列化&反序列化
      2 #   内存中的数据类型---->序列化---->特定的格式(json格式或者pickle格式)
      3 #   内存中的数据类型<----反序列化<----特定的格式(json格式或者pickle格式)
      4 
      5 #   土办法:
      6 #   {'aaa':111}--->序列化str({'aaa':111})----->"{'aaa':111}"
      7 #   {'aaa':111}<---反序列化eval("{'aaa':111}")<-----"{'aaa':111}"
      8 
      9 # 2、为何要序列化
     10 #   序列化得到结果=>特定的格式的内容有两种用途
     11 #   1、可用于存储=》用于存档
     12 #   2、传输给其他平台使用=》跨平台数据交互
     13 #        python                 java
     14 #         列表     特定的格式      数组
     15 
     16 #   强调:
     17 #       针对用途1的特定一格式:可是一种专用的格式=》pickle只有python可以识别
     18 #       针对用途2的特定一格式:应该是一种通用、能够被所有语言识别的格式=》json
     19 
     20 
     21 # 3、如何序列化与反序列化
     22 # 示范1
     23 # import json
     24 # # 序列化
     25 # json_res=json.dumps([1,'aaa',True,False])
     26 # # print(json_res,type(json_res)) # "[1, "aaa", true, false]"
     27 #
     28 # # 反序列化
     29 # l=json.loads(json_res)
     30 # print(l,type(l))
     31 
     32 
     33 # 示范2:
     34 import json
     35 
     36 # 序列化的结果写入文件的复杂方法
     37 # json_res=json.dumps([1,'aaa',True,False])
     38 # # print(json_res,type(json_res)) # "[1, "aaa", true, false]"
     39 # with open('test.json',mode='wt',encoding='utf-8') as f:
     40 #     f.write(json_res)
     41 
     42 # 将序列化的结果写入文件的简单方法
     43 # with open('test.json',mode='wt',encoding='utf-8') as f:
     44 #     json.dump([1,'aaa',True,False],f)
     45 
     46 
     47 # 从文件读取json格式的字符串进行反序列化操作的复杂方法
     48 # with open('test.json',mode='rt',encoding='utf-8') as f:
     49 #     json_res=f.read()
     50 #     l=json.loads(json_res)
     51 #     print(l,type(l))
     52 
     53 # 从文件读取json格式的字符串进行反序列化操作的简单方法
     54 # with open('test.json',mode='rt',encoding='utf-8') as f:
     55 #     l=json.load(f)
     56 #     print(l,type(l))
     57 
     58 
     59 # json验证: json格式兼容的是所有语言通用的数据类型,不能识别某一语言的所独有的类型
     60 # json.dumps({1,2,3,4,5})
     61 
     62 # json强调:一定要搞清楚json格式,不要与python混淆
     63 # l=json.loads('[1, "aaa", true, false]')
     64 # l=json.loads("[1,1.3,true,'aaa', true, false]")
     65 # print(l[0])
     66 
     67 # 了解
     68 # l = json.loads(b'[1, "aaa", true, false]')
     69 # print(l, type(l))
     70 
     71 # with open('test.json',mode='rb') as f:
     72 #     l=json.load(f)
     73 
     74 
     75 # res=json.dumps({'name':'哈哈哈'})
     76 # print(res,type(res))
     77 
     78 # res=json.loads('{"name": "\u54c8\u54c8\u54c8"}')
     79 # print(res,type(res))
     80 
     81 # 4、猴子补丁
     82 # 在入口处打猴子补丁
     83 # import json
     84 # import ujson
     85 #
     86 # def monkey_patch_json():
     87 #     json.__name__ = 'ujson'
     88 #     json.dumps = ujson.dumps
     89 #     json.loads = ujson.loads
     90 #
     91 # monkey_patch_json() # 在入口文件出运行
     92 
     93 
     94 # import ujson as json # 不行
     95 
     96 # 后续代码中的应用
     97 
     98 # json.dumps()
     99 # json.loads()
    100 
    101 
    102 # 5.pickle模块
    103 import pickle
    104 # res=pickle.dumps({1,2,3,4,5})
    105 # print(res,type(res))
    106 
    107 # s=pickle.loads(res)
    108 # print(s,type(s))
    json&pickle模块
     1 """
     2 解析.ini(初始化类文件)配置文件
     3 文件格式示例:
     4 [alex]
     5 name = alex Li
     6 password = e99a18c428cb38d5f260853678922e03
     7 expire = 2017-09-20
     8 
     9 
    10 [egon]
    11 name = egg lin
    12 password = dddd
    13 expire = 2018-01-01
    14 """
    15 config=configparser.ConfigParser()
    16 config.read('test.ini')
    17 
    18 # 1、获取sections
    19 # print(config.sections())
    20 
    21 # 2、获取某一section下的所有options
    22 # print(config.options('section1'))
    23 
    24 # 3、获取items
    25 # print(config.items('section1'))
    26 
    27 # 4、
    28 # res=config.get('section1','user')
    29 # print(res,type(res))
    30 
    31 # res=config.getint('section1','age')
    32 # print(res,type(res))
    33 
    34 
    35 # res=config.getboolean('section1','is_admin')
    36 # print(res,type(res))
    37 
    38 
    39 # res=config.getfloat('section1','salary')
    40 # print(res,type(res))
    configparser
     1 # 1、什么是哈希hash
     2 #    hash一类算法,该算法接受传入的内容,经过运算得到一串hash值
     3 #    hash值的特点:
     4 #I 只要传入的内容一样,得到的hash值必然一样
     5 #II 不能由hash值返解成内容
     6 #III 不管传入的内容有多大,只要使用的hash算法不变,得到的hash值长度是一定
     7 
     8 # 2、hash的用途
     9 # 用途1:特点II用于密码密文传输与验证
    10 # 用途2:特点I、III用于文件完整性校验
    11 
    12 # 3、如何用
    13 # import hashlib
    14 #
    15 # m=hashlib.md5()
    16 # m.update('hello'.encode('utf-8'))
    17 # m.update('world'.encode('utf-8'))
    18 # res=m.hexdigest() # 'helloworld'
    19 # print(res)
    20 #
    21 # m1=hashlib.md5('he'.encode('utf-8'))
    22 # m1.update('llo'.encode('utf-8'))
    23 # m1.update('w'.encode('utf-8'))
    24 # m1.update('orld'.encode('utf-8'))
    25 # res=m1.hexdigest()# 'helloworld'
    26 # print(res)
    27 
    28 
    29 
    30 # 模拟撞库
    31 # cryptograph='aee949757a2e698417463d47acac93df'
    32 # import hashlib
    33 #
    34 # # 制作密码字段
    35 # passwds=[
    36 #     'alex3714',
    37 #     'alex1313',
    38 #     'alex94139413',
    39 #     'alex123456',
    40 #     '123456alex',
    41 #     'a123lex',
    42 # ]
    43 #
    44 # dic={}
    45 # for p in passwds:
    46 #     res=hashlib.md5(p.encode('utf-8'))
    47 #     dic[p]=res.hexdigest()
    48 #
    49 # # 模拟撞库得到密码
    50 # for k,v in dic.items():
    51 #     if v == cryptograph:
    52 #         print('撞库成功,明文密码是:%s' %k)
    53 #         break
    54 
    55 
    56 # 提升撞库的成本=>密码加盐
    57 import hashlib
    58 
    59 m=hashlib.md5()
    60 
    61 m.update('天王'.encode('utf-8'))
    62 m.update('alex3714'.encode('utf-8'))
    63 m.update('盖地虎'.encode('utf-8'))
    64 print(m.hexdigest())
    65 
    66 
    67 
    68 
    69 # m.update(文件所有的内容)
    70 # m.hexdigest()
    71 #
    72 # f=open('a.txt',mode='rb')
    73 # f.seek()
    74 # f.read(2000) # 巨琳
    75 # m1.update(文见的一行)
    76 #
    77 # m1.hexdigest()
    hashlib哈希
     1 import subprocess
     2 
     3 obj=subprocess.Popen('echo 123 ; ls / ; ls /root',shell=True,
     4                  stdout=subprocess.PIPE,
     5                  stderr=subprocess.PIPE,
     6                  )
     7 
     8 print(obj)
     9 res=obj.stdout.read()
    10 print(res.decode('utf-8')) #123 ; ls / ; ls /root
    11 
    12 err_res=obj.stderr.read() 
    13 print(err_res.decode('utf-8'))
    subprocess

     

标签:常用,res,json,模块,print,import,foo,第二篇
来源: https://www.cnblogs.com/huahuawang/p/14724589.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有