第二十天学习:模块(二)
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) 后面的内容不会执行,程序已经退出