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

浙公网安备 33010602011771号