zoukankan      html  css  js  c++  java
  • 常用模块-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)) #随机打印四个字符串,包含字母和数字
  • 相关阅读:
    LC.225. Implement Stack using Queues(using two queues)
    LC.232. Implement Queue using Stacks(use two stacks)
    sort numbers with two stacks(many duplicates)
    LC.154. Find Minimum in Rotated Sorted Array II
    LC.81. Search in Rotated Sorted Array II
    LC.35.Search Insert Position
    前后端分离:(一)
    Redis基本使用(一)
    GIT篇章(二)
    GIT篇章(一)
  • 原文地址:https://www.cnblogs.com/Jweiqing/p/8934729.html
Copyright © 2011-2022 走看看