• 常用模块


    常用模块

    一、时间模块(time):

    在Python中,通常有三种方式来表示:时间戳、元组、格式化的时间字符串
    三种表达方式:
    第一种:时间戳:表现形式是一种字符串形式

    • 时间戳
    >>import time 
    >>time.time()
    >>1498028767.970267  #时间戳的表示是从1970年1月1日00:00:00开始按秒计算的偏移量
    
    • 时间字符串
    >>> time.strftime("%Y-%m-%d %X")
    '2017-06-21 03:12:15'
    
    • 时间元组又称结构化时间
    >>> time.localtime()  #如果没有指定时间默认会结构化当前的时间
    time.struct_time(tm_year=2017, tm_mon=6, tm_mday=21, tm_hour=3, tm_min=13, tm_sec=8, tm_wday=2, tm_yday=172, tm_isdst=1)
    >>> c=time.localtime()
    >>> c.tm_year
    2017
    

    这里以元组的形式输出,共有9个元素:(年,月,日,分,秒,一年中的第几周,一年中的第几天等)

    三种时间是的类型:时间戳是给到计算机计算的,而字符串是给到用户看得

    二、随机模块(random):

    >>> import random
    >>> random.random() 
    0.6394147761575729   #没有指定范围默认为0-1的范围的浮点型
    
    • random.randint() #整数型随机数
    >>> random.randint(1,4)  
    2
    >>> random.randint(1,4)
    3
    >>> random.randint(1,4)
    3
    >>> random.randint(1,4)
    4
    
    • random.choice() #指定随机元素
    >>> random.choice([1,4,3,"fs"])
    'fs'
    >>> random.choice([1,4,3,"fs"])
    3
    >>> random.choice([1,4,3,"fs"])
    'fs'
    >>> random.choice([1,4,3,"fs"])
    4
    >>> (random.choice([1,4,3,"fs"]),2)
    (3, 2)
    >>> (random.choice([1,4,3,"fs"]),2)
    (4, 2)
    
    • random.shuffle() #打乱次序
    >>> item=[1,2,3,44,21,9]
    >>> random.shuffle(item)
    >>> print(item)
    [1, 21, 3, 2, 44, 9]
    >>> print(item)
    [1, 21, 3, 2, 44, 9]
    

    三、hashlib模块

    hashlib 是一个提供了一些流行的hash算法的 Python 标准库.其中所包括的算法有 md5, sha1, sha224, sha256, sha384, sha512. 另外,模块中所定义的 new(name, string=”) 方法可通过指定系统所支持的hash算法来构造相应的hash对象.

    • 单类摘要转换
    import hashlib
    m=hashlib.md5()  
    m.update("hello".encode("utf-8"))  将摘要的字符串存在于m中
    print(m.hexdigest())  #将m中摘要的字符(”hello“)#转化为16进制的密文
    
    "D:Program Filespython.exe" "E:/py_code/day 7/生成器.py"
    5d41402abc4b2a76b9719d911017c592
    
    Process finished with exit code 0
    
    • 多类摘要转换
    import hashlib
    m=hashlib.md5()
    m.update("hello".encode("utf-8"))
    m.update("world".encode("utf-8"))
    print(m.hexdigest())  #这里得出的结果是将“helloworld"进行转换
    
    "D:Program Filespython.exe" "E:/py_code/day 7/生成器.py"
    fc5e038d38a57032085441e7fe7010b0
    
    Process finished with exit code 0
    

    四、os模块

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

    • os.getcwd() #查看当前目录的绝对路径
    import os
    print(os.getcwd())
    
    "D:Program Filespython.exe" "E:/py_code/day 7/生成器.py"
    E:py_codeday 7
    
    Process finished with exit code 0
    
    • os.chdir() #切换工作目录
    os.chdir(r"E:py_codeday 8")  #切换工作目录到指定目录下
    open("text.txt",'w')   #因为已经切换了目录所以这里的创建的一个文件会在切换的目录下
    print(os.getcwd())
    
    "D:Program Filespython.exe" "E:/py_code/day 7/生成器.py"
    E:py_codeday 8
    
    Process finished with exit code 0
    
    • makedirs()
    os.makedirs("tesy/bash")  #递归创建先创建tesy然后在其下面在创建bash
    
    • removedirs()
    os.removedirs("tesy/bash") #递归删除,但先判断文件是否为空在进行删除
    
    • listdir()
    import os
    print(os.listdir("E:py_codeday 6"))  #将指定目录下的文件以列表的形式输出
    
    • os.rename()
    import os
    print(os.rename("a.txt","c.txt"))
    
    • os.stat()
    import os
    print(os.stat(r"E:py_codeday 7.txt"))
    下面是输出的结果:
    "D:Program Filespython.exe" "E:/py_code/day 7/生成器.py"
    os.stat_result(st_mode=33206, st_ino=8444249301326323, st_dev=18467, st_nlink=1, st_uid=0, st_gid=0, st_size=68, st_atime=1497602601, st_mtime=1497602601, st_ctime=1497602543)
    
    Process finished with exit code 0
    解释:
    st_ctime=1497602543:创建时间
    st_mtime=1497602601:修改时间
    st_atime=1497602601:访问时间
    st_size=68:文件大小(字节)
    
    • os.name
    import os
    print(os.name) #显示当前的系统平台win-->输出“nt”  Linux-->输出“posix”
    
    • os.system() #运行shell命令,直接显示
    import os
    print(os.system("dir"))
    
    • os.path.abspath #显示指定文件的绝对路径
    import os
    print(os.path.abspath("b.txt"))
    
    "D:Program Filespython.exe" "E:/py_code/day 7/生成器.py"
    E:py_codeday 7.txt
    
    Process finished with exit code 0
    
    • os.path.basename():取文件基名;os.path.dirname():取文件目录路径
    import os
    res=os.path.abspath("b.txt")
    print(os.path.basename(res))
    print(os.path.dirname(res))
    
    "D:Program Filespython.exe" "E:/py_code/day 7/生成器.py"
    b.txt
    E:py_codeday 7
    
    Process finished with exit code 0
    
    • os.path.join() #拼接
    import os
    s1=r"E:py_code"
    s2=r"day 3"
    s=os.path.join(s1,s2)
    print(s)
    
    "D:Program Filespython.exe" "E:/py_code/day 7/生成器.py"
    E:py_codeday 3
    
    Process finished with exit code 0
    
    

    五、sys模块

    • sys.version() #查看当前解释器的版本
    import sys
    print(sys.version) 
    
    "D:Program Filespython.exe" "E:/py_code/day 7/生成器.py"
    3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)]
    
    Process finished with exit code 0
    
    
    • sys.platform() #查看当前的操作系统版本
    import sys
    print(sys.platform)
    
    "D:Program Filespython.exe" "E:/py_code/day 7/生成器.py"
    win32
    
    Process finished with exit code 0
    
    • sys.argv #是用来获取命令行参数的,sys.argv[0]表示代码本身文件路径,所以参数从1开始
    import sys
    print(sys.argv)
    username=sys.argv[1]   --->li
    password=sys.argv[2]   --->4324225
    E:py_codeday 7>python 生成器.py li 4324225                                                                                                                                                                     
    ['生成器.py', 'li', '4324225'] 
    
    • sys.path
    import sys
    print(sys.path)
    
    输出结果:
    ['E:\py_code\day 7', 'E:\py_code', 'D:\Program Files\python36.zip', 'D:\Program Files\DLLs', 'D:\Program Files\lib', 'D:\Program Files', 'D:\Program Files\lib\site-packages']
    

    六、logging模块

    默认情况下Python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG),默认的日志格式为日志级别:Logger名称:用户输出消息。

    import logging
    
    logging.debug("debug")
    logging.info("info")
    logging.warning("warning")    #默认等级显示的等级,大于该等级的才会打印,小于该等级则不予显示
    logging.error("error")
    logging.critical("critical")
    上述的显示效果是可以通过配置文件进行修改的:
    cogfig:
    import logging  
    logging.basicConfig(level=logging.warning(设定显示等级),  
                        format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',  
                        datefmt='%a, %d %b %Y %H:%M:%S'(即format中的asctime的时间格式),  
                        filename='/tmp/test.log'(将输出指定到文件中),  
                        filemode='w')  
      
    logging.debug('debug message')  
    logging.info('info message')  
    logging.warning('warning message')  
    logging.error('error message')  
    logging.critical('critical message')
    下面是配置参数
    logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有:
    
    filename:用指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中。
    filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。
    format:指定handler使用的日志显示格式。
    datefmt:指定日期时间格式。
    level:设置rootlogger(后边会讲解具体概念)的日志级别
    stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件(f=open(‘test.log’,’w’)),默认为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被忽略。
    
    format参数中可能用到的格式化串:
    %(name)s Logger的名字
    %(levelno)s 数字形式的日志级别
    %(levelname)s 文本形式的日志级别
    %(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
    %(filename)s 调用日志输出函数的模块的文件名
    %(module)s 调用日志输出函数的模块名
    %(funcName)s 调用日志输出函数的函数名
    %(lineno)d 调用日志输出函数的语句所在的代码行
    %(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
    %(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
    %(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
    %(thread)d 线程ID。可能没有
    %(threadName)s 线程名。可能没有
    %(process)d 进程ID。可能没有
    %(message)s用户输出的消息
    
    logger:
    
    import logging
    logger=logging.getLogger()  #生成一个对象
    
    fh=logging.FileHandler("log.txt")  #创建一个文件的输出流指定文件名
    fh.setLevel(logging.DEBUG)         #指定等级
    sh=logging.StreamHandler()      #创建一个屏幕的输出流
    logger.addHandler(sh)          #添加文件输出到指定文件中
    logger.addHandler(fh)          #添加屏幕的输出流
    
    fm=logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")  #修改输出流的格式并赋值给到fm方便调用
    
    fh.setFormatter(fm) #调用输出流的格式给到文件输出流,运行后日志文件的输出格式将按fm的格式进行输出
    
    logging.debug("debug")
    logging.info("info")
    logging.warning("warning")
    logging.error("error")
    logging.critical("critical")
    

    七、序列化模块

    • 第一种dumps的转化方式:
    import json
    d={"name":"keny"}
    s=json.dumps(d)   #将字典d转化为json字符串--->序列化
    f=open("new","w")
    f.write(s)      #将转化为json的字符串s写入文件中
    f.close()
    f2=open("new")
    data=f2.read()
    data=json.loads(data)  #将new文件中的json字符串反序列读取出来
    print(data,type(data))
    输出:
    "D:Program Filespython.exe" "E:/py_code/day 7/生成器.py"
    {'name': 'keny'} <class 'dict'>  #输出的格式按保存的格式进行输出
    
    Process finished with exit code 0
    
    • 第二种dump的转化方式:
    import json
    d={"name":"keny"}
    f=open("new2",'w')
    json.dump(d,f)   #1.将d转成json字符串;2.将json字符串写入f中
    f.close()
    f2=open("new2")
    data=f2.read()
    data=json.loads(data)  #将new文件中的json字符串反序列读取出来
    print(data,type(data))
    
  • 相关阅读:
    数学专业的数学与计算机专业的数学的比较(转)
    vim的复制粘贴小结(转)
    (转)会议期刊论文发表介绍(计算机科学领域)
    字符串最后一个单词的长度(华为在线训练)
    (转)初识suse——linux
    (转)C++中返回对象的情形及RVO
    mystring c++ 自己的string 封装
    std::string
    FTP 1.0
    conflicting types for xxxx错误 (转)
  • 原文地址:https://www.cnblogs.com/lijian-22huxiaoshan/p/7067457.html
Copyright © 2020-2023  润新知