zoukankan      html  css  js  c++  java
  • 第二十天学习:模块(二)

    1. logging
     
    (1) 日志打印到屏幕:

    import logging
    logging.debug('this is debug message')
    logging.info('this is info message')
    logging.warning('this is warning message')
    logging.error('this is error message')
    logging.critical('this is critical message')
    结果:
    WARNING:root:this is warning message
    ERROR:root:this is error message
    CRITICAL:root:this is critical message
    #注意:从上往下,日记级别逐渐升高,debug-info-warning-error-critical,默认warnging
    

      

    (2) 日志记录到文件中

    import logging
    logging.basicConfig(
        level=logging.DEBUG,
        format='%(asctime)s %(filename)s[line:%(lineno)d]%(levelname)s %(message)s',
        datefmt='%Y/%m/%d %H:%M:%S',
        filename='file.log',
        filemode='w')
    logger = logging.getLogger(__name__)
    logging.debug('this is debug log')
    logging.info('this is info log')
    logging.warning('this is warning log')
    结果会新增文件file.log,此文件信息:
    2017/10/29 16:44:10 10_4.py[line:23]DEBUG this is debug log
    2017/10/29 16:44:10 10_4.py[line:24]INFO this is info log
    2017/10/29 16:44:10 10_4.py[line:25]WARNING this is warning log
    
    注意:  
    logging.getLogger(__name__)中__name__指的是__main__
     
    (3) 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被忽略

    2、os模块

    import os
    print(os.name)
    winsow系统名称为nt
    linux系统名称为posix
     
    import os
    print(os.name)
    context = os.popen('ipconfig').read()
    print(context)
    os.popen()返回的是一个file 的对象,通过file.read()获取结果
     
    os.listdir()
    os.getdir()
    os.getcwd()
    os.chdir()
     
    实例1:

    import os
    
    print(os.listdir('.'))
    print(os.getcwd())
    os.chdir('d:/')
    print(os.getcwd())
    os.chdir('D:/PycharmProjects/learn5/learn10')
    print(os.getcwd())
    #os.mkdir('abc')
    #os.remove('file.log')
    print(os.linesep)
    if not os.path.exists('111'):
        os.mkdir('111')
    

      

    实例2:

    import os
    
    print(os.listdir('.'))
    print(os.getcwd())
    print(os.path.dirname('D:/PycharmProjects/learn5/learn10'))
    print(os.path.basename('D:/PycharmProjects/learn5/learn10'))
    结果:
    ['10_4.py', '10_5.py', '111', 'abc', 'demon.py', 'test']
    D:PycharmProjectslearn5learn10
    D:/PycharmProjects/learn5
    learn10
    

    3、command模块  

    #!/usr/bin/env python
    #-*-coding:utf-8 -*-
    import commands
    
    cmd = 'ls /home/'
    result = commands.getoutput(cmd)
    print(type(result))
    print(result)
    result01, status = commands.getstatusoutput(cmd)
    print(type(result01), type(status))
    print(result01, status)
    print(status)
    

      

    (1)commands.getoutput() 的返回值只有返回结果,没法对执行结果是否正常进行判断
    (2)commands.getstatusoutput() 的返回值是一个tuple类型。第一个值接收状态码,int类型;如果返回值为0,说明执行正常,非0为不正常;第二个值接收结果,为str类型。
     

    4、sys模块

    #!/usr/bin/python
    import sys 
    if __name__ == '__main__':
        print('sys.argv[0] = {0}'.format(sys.argv[0]))
        print('sys.argv[1] = {0}'.format(sys.argv[1]))
        print('sys.argv[2] = {0}'.format(sys.argv[2]))
    
    # python 10_7.py  1 2
    sys.argv[0] = 10_7.py
    sys.argv[1] = 1
    sys.argv[2] = 2
    

     

    sys.argv[n] 参数

    #!/usr/bin/python
    import sys 
    ff = open('out.log','w')
    sys.stdout = ff
    print('hello')
    #将会生成文件out.log,文件中写入hello
    

      

    #!/usr/bin/python
    import sys 
    def hello():
        print('hello')
    sys.exitfunc = hello  #设置捕获时调用的函数
    print('start')
    sys.exit(1)    #退出自动调用exitfunc后,程序依然退出
    print('end')  #不会执行
    执行结果:
    start
    hello
    

      

    (1)sys.exitfunc = hello退出时候调用hello函数
    (2)sys.exit(1) 后面的内容不会执行,程序已经退出

  • 相关阅读:
    [工具分享]JetBrains ReSharper 9.0 正式版和注册码
    JAVA数据库连接池的革命 -- 从BoneCP到HikariCP
    【C#教程10】C# 判断
    【C#教程09】C# 运算符
    【C#教程07】C# 变量
    【C#教程06】C# 类型转换
    【C# 教程05】C# 数据类型
    【C# 教程04】C# 基本语法
    【C# 教程03】C# 程序结构
    【C#教程02】C# 环境
  • 原文地址:https://www.cnblogs.com/yshan13/p/7817978.html
Copyright © 2011-2022 走看看