• 常用模块-01


    一、logging模块

    1.1、logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等,相比print,具备如下优点:

    ①、可以通过设置不同的日志等级,在release版本中只输出重要信息,而不必显示大量的调试信息;

    ②、print将所有信息都输出到标准输出中,严重影响开发者从标准输出中查看其它数据;logging则可以由开发者决定将信息输出到什么地方,以及怎么输出

    1.2、默认情况下,logging将日志打印到屏幕,日志级别为WARNING
    日志级别大小关系为:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,当然也可以自己定义日志级别。

    1.3、示例:

    import logging
    import os
    logging.basicConfig(format="%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s",
    filename=os.path.join(os.getcwd(),"log.txt"),level = logging.WARNING) #定义日志输出格式和输出到log.txt文件里
    log = logging.getLogger() #Logger对象
    log.setLevel(logging.WARNING) #日志记录级别为WARNNING,同上面的level一样,可二选一,如果这里定义了那结果会以这里的为准
    log.info("info") #不会被记录
    log.debug("debug") #不会被记录
    log.warning("warnning")    #logging.getLogger().debug("hello debug") = logging.debug("hello debug")
    log.error("error")
    print(log.propagate) #返回输出情况,bool值

    logging.basicConfig函数各参数:
    filename: 指定日志文件名
    filemode: 和file函数意义相同,指定日志文件的打开模式,'w'或'a',不写的话默认是'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被忽略

    warn和warning的区别:
    warn应表明该问题是可以避免的,应该通过修改优化程序剔除这类消息
    warning应表明程序对这种问题无能为力,但应该报告

    二、os模块

    通过os模块可以调用系统命令,获得路劲,获取操作系统的类型等

    2.1、示例:

    import os
    print(os.name)
    if os.name == "nt":
    cmd = "ipconfig"
    elif os.name == "posix":
    cmd = "ifconfig"

    os.system(cmd) #纯粹执行系统命令,但是没有返回结果


    result = os.popen(cmd)
    result.read()    #这样就可以对reuslt进行控制了,比如提取ip等

    #如果结果为nt, 则为windows系统

    #如果结果为posix, 则为unix系统

    print(os.listdir("C:"))   #列出当前目录, ls
    os.chdir("..")         #改变目录, cd
    print(os.getcwd())      #当前路径, pwd
    os.mkdir("test")    #创建目录
    os.remove("myapp.log")   #删除文件
    os.rmdir("test")      #删除目录
    os.rename("demon1.py", "demon111.py") #修改名称
    print(os.linesep) #字符串给出当前平台使用的行终止符。例如,Windows使用' ',Linux使用' '而Mac使用' '

    if not os.path.exists("test"):  #判断是否存在,然后做相应的操作
        os.mkdir("test")

    print(os.path.abspath("./"))   #获取绝对路径
    print(os.path.split("E:LivePython1第十一课"))  #输出:('E:\LivePython1', '第十一课')

    三、sys模块

    3.1、sys模块的常见函数列表:

    sys.argv: 实现从程序外部向程序传递参数。
    sys.exit([arg]): 程序中间的退出,arg=0为正常退出。
    sys.getdefaultencoding(): 获取系统当前编码,一般默认为ascii。
    sys.setdefaultencoding(): 设置系统默认编码,执行dir(sys)时不会看到这个方法,在解释器中执行不通过,可以先执行reload(sys),再执行 setdefaultencoding('utf8'),此时将系统默认编码设置为utf8。(见设置系统默认编码 )
    sys.getfilesystemencoding(): 获取文件系统使用编码方式,Windows下返回'mbcs',mac下返回'utf-8'.
    sys.path: 获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到。
    sys.platform: 获取当前系统平台。
    sys.stdin,sys.stdout,sys.stderr: stdin,stdout,以及stderr变量包含与标准I/O 流对应的流对象. 如果需要更好地控制输出,而print 不能满足你的要求, 它们就是你所需要的. 你也可以替换它们, 这时候你就可以重定向输出和输入到其它设备( device ), 或者以非标准的方式处理它们

    3.2、示例:

    import sys

    f = open("1.log", "w")
    f.write("yes ")      #yes直接写入到1.log里面
    sys.stdout.write("no")   #no是直接打印出来而不写入到1.log里
    sys.stdout = f
    print("hello world")    #hello world是直接写入到1.log里面去而不打印出来
    f.close()

    四、random模块

    4.1、常用用法:

    ①、random.randint(0,99)    #0-99的随机整数

    ②、random.randrange(0, 101, 2)  #随机选取0到100间的偶数:

    ③、random.random()      #随机浮点数

    ④、random.uniform(1, 10)   #1-10的随机浮点数

    ⑤、random.choice('abcdefg&#%^*f')  #随机字符

    ⑥、random.sample('abcdefghij',3)   #多个字符中随机选取3个

    4.2、示例:

    import random

    class NumberCount(object):
    def __init__(self):
    self.number1 = 0
    self.number2 = 0
    self.number3 = 0
    self.number4 = 0
    self.number5 = 0
    self.number6 = 0
    def count(self):
    for i in range(1, 1000):
    number = random.randint(1, 6)
    if number == 1:
    self.number1 += 1
    if number == 2:
    self.number2 += 1
    if number == 3:
    self.number3 += 1
    if number == 4:
    self.number4 += 1
    if number == 5:
    self.number5 += 1
    if number == 6:
    self.number6 += 1
    def getResult(self):
    print("1出现的次数: {0}".format(self.number1))
    print("2出现的次数: {0}".format(self.number2))
    print("3出现的次数: {0}".format(self.number3))
    print("4出现的次数: {0}".format(self.number4))
    print("5出现的次数: {0}".format(self.number5))
    print("6出现的次数: {0}".format(self.number6))

    if __name__ == "__main__":
    numberCount = NumberCount()
    numberCount.count()
    numberCount.getResult()

    五、string模块

    5.1、常用用法:

    print(string.ascii_letters)    #打印所有大小写字母
    print(string.digits)        #打印所有数字
    print(string.ascii_lowercase)   #打印所有小写字母
    print(string.ascii_uppercase)   #打印所有大写字母
    print(string.printable)       #打印所有可打印的
    print(string.punctuation)     #打印所有特殊字符
    print(string.hexdigits)      #打印十六进制符
    print("".join(random.sample(string.ascii_letters + string.digits, 4)) #随机打印四个字符串,包含字母和数字
  • 相关阅读:
    Kanzi Studio中的概念
    Linux基本操作1
    Kanzi入门
    Kanzi UI Solution
    Linux下内存占用和CPU占用的计算
    AD19新功能之交互式等长
    AD19新功能之跟随走线
    AD19新功能之Gloss Selected(修线)
    AD19新功能之ActiveRoute
    RT-Thread--内核移植
  • 原文地址:https://www.cnblogs.com/Jweiqing/p/8934729.html
Copyright © 2020-2023  润新知