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

    collections模块

      在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。  

      namedtuple(具名元组)

      可以表示不变集合,可以用具名元组来记录一个城市的信息,一个点的二维坐标也可以表示,还可以用坐标和半径表示一个圆

    >>> from collections import namedtuple
    >>> Point = namedtuple('Point', ['x', 'y'])
    >>> p = Point(1, 2)
    >>> p.x
    1
    >>> p.y
    2
    
    
    
    >>> from collections import namedtuple
    >>> City = namedtuple('City', 'name country population coordinates')  # 第一个是类名,第二个是类的各个字段的名字。后者可以是由数个字符串组成的可迭代对象,或者是由空格分隔开的字段名组成的字符串
    >>> tokyo = City('Tokyo', 'JP', 36.933, (35.689722, 139.691667)) 
    >>> tokyo
    City(name='Tokyo', country='JP', population=36.933, coordinates=(35.689722, 139.691667))
    >>> tokyo.population 
    36.933
    >>> tokyo.coordinates
    (35.689722, 139.691667)
    >>> tokyo[1]
    'JP'
    
    
    #namedtuple('名称', [属性list]):
    Circle = namedtuple('Circle', ['x', 'y', 'r'])

    时间模块

      时间模块的三中表现形式:

        1,时间戳   通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。

        2,格式化时间   格式化的时间字符串(Format String): ‘1999-12-06’

        3 ,结构化时间   )元组(struct_time) :struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)

    random模块

      随机模块

    import random
    
    print(random.randint(1,6))  # 随机取一个你提供的整数范围内的数字  包含首尾
    print(random.random())  # 随机取0-1之间小数
    print(random.choice([1,2,3,4,5,6]))  # 摇号 随机从列表中取一个元素
    res = [1,2,3,4,5,6]
    random.shuffle(res)  # 洗牌
    print(res)
    
    
    
    # 生成随机验证码
    
    """
    大写字母 小写字母 数字
    
    5位数的随机验证码
    chr
    random.choice
    封装成一个函数,用户想生成几位就生成几位
    """
    def get_code(n):
        code = ''
        for i in range(n):
            # 先生成随机的大写字母 小写字母 数字
            upper_str = chr(random.randint(65,90))
            lower_str = chr(random.randint(97,122))
            random_int = str(random.randint(0,9))
            # 从上面三个中随机选择一个作为随机验证码的某一位
            code += random.choice([upper_str,lower_str,random_int])
        return code
    res = get_code(4)
    print(res)

    os模块

    os模块是与操作系统交互的一个接口

    import os
    # BASE_DIR = os.path.dirname(__file__)
    # MOVIE_DIR = os.path.join(BASE_DIR,'老师们的作品')
    # movie_list = os.listdir(MOVIE_DIR)
    # while True:
    #     for i,j in enumerate(movie_list,1):
    #         print(i,j)
    #     choice = input('你想看谁的啊(今日热搜:tank老师)>>>:').strip()
    #     if choice.isdigit():  # 判断用户输入的是否是纯数字
    #         choice = int(choice)  # 传成int类型
    #         if choice in range(1,len(movie_list)+1):  # 判断是否在列表元素个数范围内
    #             # 获取用户想要看的文件名
    #             target_file = movie_list[choice-1]
    #             # 拼接文件绝对路径
    #             target_path = os.path.join(MOVIE_DIR,target_file)
    #             with open(target_path,'r',encoding='utf-8') as f:
    #                 print(f.read())
    
    
    
    # os.mkdir('tank老师精选')  # 自动创建文件夹
    # print(os.path.exists(r'D:Python项目day16
    ion老师精选'))  # 判断文件是否存在
    # print(os.path.exists(r'D:Python项目day16老师们的作品	ank老师.txt'))  # 判断文件是否存在
    # print(os.path.isfile(r'D:Python项目day16	ank老师精选'))  # 只能判断文件 不能判断文件夹
    # print(os.path.isfile(r'D:Python项目day16老师们的作品	ank老师.txt'))  # 只能判断文件 不能判断文件夹
    
    # os.rmdir(r'D:Python项目day16老师们的作品')  # 只能删空文件夹
    
    # print(os.getcwd())
    # print(os.chdir(r'D:Python项目day16老师们的作品'))  # 切换当前所在的目录
    # print(os.getcwd())
    
    # 获取文件大小
    # print(os.path.getsize(r'D:Python项目day16老师们的作品	ank老师.txt'))  # 字节大小
    # with open(r'D:Python项目day16老师们的作品	ank老师.txt',encoding='utf-8') as f:
    #     print(len(f.read()))

     sys模块

    import sys
    # sys.path.append()  # 将某个路径添加到系统的环境变量中
    # print(sys.platform)
    # print(sys.version)  # python解释器的版本
    
    print(sys.argv)  # 命令行启动文件 可以做身份的验证
    if len(sys.argv) <= 1:
        print('请输入用户名和密码')
    else:
        username = sys.argv[1]
        password = sys.argv[2]
        if username == 'jason' and password == '123':
            print('欢迎使用')
            # 当前这个py文件逻辑代码
        else:
            print('用户不存在 无法执行当前文件')

    序列化模块

    序列化
    序列:字符串
    序列化:其他数据类型转换成字符串的过程

    写入文件的数据必须是字符串

    基于网络传输的数据必须是二进制

     d = {'name':'jason'}   字典
        str(d)
    
    
    
    
        序列化:其他数据类型转成字符串的过程
        反序列化:字符串转成其他数据类型
    
        json模块(******)
            所有的语言都支持json格式
            支持的数据类型很少  字符串 列表 字典 整型 元组(转成列表)  布尔值
    
    
        pickle模块(****)
            只支持python
            python所有的数据类型都支持
    """
    import json
    """
    dumps:序列化 将其他数据类型转成json格式的字符串
    loads:反序列化 将json格式的字符串转换成其他数据类型
    
    dump load
    """
    # d = {"name":"jason"}
    # print(d)
    # res = json.dumps(d)  # json格式的字符串 必须是双引号 >>>: '{"name": "jason"}'
    # print(res,type(res))
    # res1 = json.loads(res)
    # print(res1,type(res1))
    
    # d = {"name":"jason"}
    
    # with open('userinfo','w',encoding='utf-8') as f:
    #     json.dump(d,f)  # 装字符串并自动写入文件
    # with open('userinfo','r',encoding='utf-8') as f:
    #     res = json.load(f)
    #     print(res,type(res))
    
    #
    # with open('userinfo','w',encoding='utf-8') as f:
    #     json.dump(d,f)  # 装字符串并自动写入文件
    #     json.dump(d,f)  # 装字符串并自动写入文件
    
    # with open('userinfo','r',encoding='utf-8') as f:
    #     res1 = json.load(f)  # 不能够多次反序列化
    #     res2 = json.load(f)
    #     print(res1,type(res1))
    #     print(res2,type(res2))
    
    
    # with open('userinfo','w',encoding='utf-8') as f:
    #     json_str = json.dumps(d)
    #     json_str1 = json.dumps(d)
    #     f.write('%s
    '%json_str)
    #     f.write('%s
    '%json_str1)
    
    
    # with open('userinfo','r',encoding='utf-8') as f:
    #     for line in f:
    #         res = json.loads(line)
    #         print(res,type(res))
    # t = (1,2,3,4)
    # print(json.dumps(t))
    
    
    # d1 = {'name':'朱志坚'}
    # print(json.dumps(d1,ensure_ascii=False))
    
    
    
    
    
    
    
    # pickle
    # import pickle
    # d = {'name':'jason'}
    # res = pickle.dumps(d)  # 将对象直接转成二进制
    # print(pickle.dumps(d))
    # res1 = pickle.loads(res)
    # print(res1,type(res1))
    
    """
    用pickle操作文件的时候 文件的打开模式必须是b模式
    """
    # with open('userinfo_1','wb') as f:
    #     pickle.dump(d,f)
    
    # with open('userinfo_1','rb') as f:
    #     res = pickle.load(f)
    #     print(res,type(res))

    subprocess模块

    1.用户通过网络连接上了你的这台电脑
    2.用户输入相应的命令 基于网络发送给了你这台电脑上某个程序
    3.获取用户命令 里面subprocess执行该用户命令
    4.将执行结果再基于网络发送给用户
    这样就实现 用户远程操作你这台电脑的操作

    # while True:
    #     cmd = input('cmd>>>:').strip()
    #     import subprocess
    #     obj = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
    #     # print(obj)
    #     print('正确命令返回的结果stdout',obj.stdout.read().decode('gbk'))
    #     print('错误命令返回的提示信息stderr',obj.stderr.read().decode('gbk'))
  • 相关阅读:
    BJDCTF-WP
    Python 每日一练(4)
    Python 每日一练(3)
    BUUCTF Crypto
    Python每日一练(1)
    Python 每日一练(2)
    oracle 组函数
    oracle 组函数
    oracle
    前端实战遇到问题
  • 原文地址:https://www.cnblogs.com/wkq0220/p/11208772.html
Copyright © 2011-2022 走看看