第二十天学习:模块(二)

时间:2021-06-04 19:24:37
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:\PycharmProjects\learn5\learn10
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) 后面的内容不会执行,程序已经退出