• Python_常用模块


    一、内置模块

    定义:其实模块简单说就是一堆代码实现某个功能,它们是已经写好的.py文件。只需要用import应用即可。

    分类:

      1. 自定义模块,就是自己写的.py文件为了实现某个功能。

      2. 内置标准模块(就是python自身已经写好的某个功能,例如经常用的sys、os等模块都是内置模块。)

      3. 开源模块,就是不收费的别人写好的模块,一般也称第三方模块。

    模块的引用:

      1. import modules

      2. from modules import  函数

      3. 如果有多个模块,可以用逗号隔开,如果想把某个模块里面的所有功能都导入,可以用*,这样的话功能都加载道内存里面,占用内存资源,不建议用。

    1、time模块

    import time
    
    print(help(time))
    print(time.time())                                                    # 1512377060.541332: 时间戳 *****
    time.sleep(3)                                                         # 停止3秒 *****
    
    print(time.localtime())                                               # 结构化时间的本地时间 *****
    
    struct_time = time.localtime()
    print(time.strftime('%Y-%m-%d %H:%M:%S', struct_time))                # 字符串时间 ******
    
    print(time.strptime('2017-12-04 17:10:46', '%Y-%m-%d %H:%M:%S'))      # 字符串时间转结构化时间 *****
    a = time.strptime('2017-12-04 17:10:46', '%Y-%m-%d %H:%M:%S')         # 结构化时间取值
    print(a.tm_year)
    print(a.tm_mday)
    
    print(time.ctime())                                                   # 取当前时间
    print(time.ctime(1234567890))                                         # 计算时间戳时间
    
    print(time.mktime(time.localtime()))                                  # 将结构化时间转换为时间戳
    
    
    print(time.gmtime())                            # 结构化时间: time.struct_time(tm_year=2017, tm_mon=12, tm_mday=4, tm_hour=8, tm_min=51, tm_sec=38, tm_wday=0, tm_yday=338, tm_isdst=0)
    print(time.clock())                             # 计算CPU执行时间
    
    # 直接看时间
    import datetime
    print(datetime.datetime.now())

    2、OS模块

    OS模块是提供对操作系统调用的接口。

    print(os.getcwd())                                      # 获取当前工作目录,及当前python脚本工作的目录路径
    os.chdir(r'E:老男孩day_18')                            # 改变当前脚本的工作目录,相当于linux的cd
    print(os.getcwd())
    print(os.curdir)                                        # 返回当前目录
    print(os.pardir)                                        # 获取当前目录父目录字符串名
    os.makedirs('abc\mu')                                  # 创建多级目录
    os.removedirs('abc\mu')                                # 先找到最深的目录,如果去空的就进行删除,并递归到上层目录如果有文件就不进行删除
    os.mkdir('dirname')                                     # 只能创建一个目录
    os.rmdir('dirname')                                     # 删除一个空的目录,非空报错
    print(os.listdir(r'E:老男孩day_18'))                   # 打印出路径的下的所有dir和file
    os.remove('file')                                       # 删除一个文件
    os.rename('oldname', 'newname')                         # 重命名文件/目录
    os.stat('path/filename'.st_size)                        # 获取文件/目录信息(大小)
    os.stat('path/filename'.st_atime)                       # 获取文件/目录信息(最后一次访问的时间)
    
    print(os.sep)                                           # 输出操作系统特定的路径分隔符,win下为'\',Linux下为'/'
    s = os.sep                                              # 用s连接路径,可解决win和linux不同的路径分隔符
    os.linesep                                              # 输出当前操作体统的换行符,win下为'
    ',Linux下为'
    '
    s = os.linesep                                          # 用s代理,解决不同的换行符
    
    os.pathsep                                              # 输出当前操作系统用于分割文件的符号,win下为';',linux下为':'
    os.name                                                 # 输出字符串提示当前适用平台。win为'nt',linux为'posix'
    os.system('ifconfig')                                   # 执行shell命令
    os.environ                                              # 获取系统环境变量
    print(os.path.abspath('./os_模块'))                      # 获取文件的据对路径
    print(os.path.split(r'E:我的坚果云Py_Program老男孩week_04day_18os_模块'))       # 分割路径和文件
    print(os.path.dirname(r'E:我的坚果云Py_Program老男孩week_04day_18os_模块'))    # 答打印出这个文件的绝对路径
    print(os.path.basename(r'E:我的坚果云Py_Program老男孩week_04day_18os_模块'))      # 返回path最后的文件名,如果是以/或者结尾,返回空值
    os.path.exists(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([a, b])                                    # 路径拼接
    os.path.getatime()                                      # 返回path所指向的文件或者目录最后的存取时间
    os.path.getmtime()                                      # 返回path所指向的文件或者目录最后的修改时间

     3、sys模块

    sys模块是和python解释器进行交互。

    sys.exit(n)                                         # 退出程序,正常退出时exit(0)
    print(sys.version)                                  # 获取Python程序解释器的版本信息
    print(sys.maxsize)                                  # 获取最大Int值
    print(sys.path)                                     # 获取模块路径,如果要手动添加模块,就手动将路径添加进去
    
    print(sys.platform)                                 # 返回操作系统平台名称
    if sys.platform == 'win32':                         # 跨平台判断
        os.system('dir')
    elif sys.platform == 'Linux':
        os.system('ls -l')
    
    sys.stdout.write('please'

     4、hashlib模块

    用于明文和密文转换。

    m = hashlib.md5()                                                 # 调用算法
    print(m)
    
    m.update('hello'.encode('utf8'))                                  # 为m赋值
    print(m.hexdigest())
    
    m.update('imomy'.encode('utf8'))                                  # 再次更新m的值
    print(m.hexdigest())
    
    m2 = hashlib.md5()                                                # 调用算法
    m2.update('helloimomy'.encode('utf8'))                            # 为m2赋值
    print(m2.hexdigest())                                             # 查看

     实际用例:

    import hashlib
    s = hashlib.sha256()
    s.update('hello'.encode('utf8'))
    print(s.hexdigest())

     5、随机数random模块

    import random
    print(random.randint(1,10))                                         # 取1-10的随机数
    print(random.randrange(1,10))                                       # 取1-9的随机数
    print(random.choice('hello'))                                       # 取字符串或序列的某个值
    print(random.choice(['12', '3', '4', [1, 2]]))                      # 取字符串或序列的某个值
    print(random.sample(['12', '3', '4', [1, 2]], 2))                   # 在序列中选多个值

     编写验证码:

    import random
    def check():
        code = ''
        for i in range(5):
            add = random.choice([random.randrange(0,9), chr(random.randrange(66,91))])
            code = code + str(add)
        return code
    print(check())

     6、日志模块

    默认情况下Python的logging的模块将日志打印到标准输出中,,且只显示大于等于warning级别的日志,这说明默认的日志级别为warning,默认的日志格式为:日志级别:logger名称:用户输出的信息

    import logging
    
    
    logging.basicConfig(level=logging.DEBUG,
                        format='%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s',
                        datefmt='%a, %d %b %Y %H:%M:%S',
                        filename='test.log',
                        filemode='a')
    
            # logging.basicConfig函数各参数:
            # filename: 指定日志文件名
            # filemode: 和file函数意义相同,指定日志文件的打开模式,'w'或'a'
            # format: 指定输出的格式和内容,format可以输出很多有用信息,如上例所示:
            #  %(levelno)s: 打印日志级别的数值
            #  %(levelname)s: 打印日志级别名称
            #  %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
            #  %(filename)s: 打印当前执行程序名
            #  %(funcName)s: 打印日志的当前函数
            #  %(lineno)d: 打印日志的当前行号
            #  %(asctime)s: 打印日志的时间
            #  %(thread)d: 打印线程ID
            #  %(threadName)s: 打印线程名称
            #  %(process)d: 打印进程ID
            #  %(message)s: 打印日志信息
            # datefmt: 指定时间格式,同time.strftime()
            # level: 设置日志级别,默认为logging.WARNING
            # stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略
    
    logging.debug('debug')
    logging.info('info')
    logging.warning('warning')
    logging.error('errot')
    logging.critical('critical')

    另外还有一个模块级别的函数,是logging:

    import logging
    
    logger = logging.getLogger()
    fh = logging.FileHandler('def_test.log')                                    # 文件对象
    ch = logging.StreamHandler()                                                # 屏幕输出对象
    formatter = logging.Formatter('%(asctime)s %(name)s %(levelname)s %(message)s')
    
    logger.setLevel(logging.DEBUG)
    fh.setFormatter(formatter)
    ch.setFormatter(formatter)
    logger.addHandler(fh)
    logger.addHandler(ch)
    
    logger.debug('debug')
    logger.info('info')
    logger.warning('warning')
    logger.error('error')
    logger.critical('critical')
  • 相关阅读:
    前端框架framework和库library的一点区别和记录
    DButils实现数据库表下划线转bean中驼峰格式
    layui内部使用jQuery
    Object...与Object[]使用的一点区别和记录
    SSM框架整合系列——第一步
    $.ajax的async设置true和false的区别一点笔记
    idea使用破解版mybatis plugin插件失败,idea打不开的解决方案
    ECharts在柱状图的柱子上方显示数量的方法
    Echarts使用Ajax异步获得数据的前端json格式转化问题
    Ajax的post表单,不在url后接一大串参数键值对的方法
  • 原文地址:https://www.cnblogs.com/dmjx/p/8043688.html
Copyright © 2020-2023  润新知