模块(二)
1、logging
1 import logging 2 logging.debug('this is debug message') 3 logging.info('this is info message') 4 logging.warning('this is warning message') 5 #警告 6 logging.error('this is error message') 7 #错误 8 logging.critical('this is critical message') 9 #从上往下,,日志级别逐渐变高,debug->info->warning->errot->critical 10 11 12 logging.basicConfig(level=__debug__,format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',datefmt=' %Y/%m/%d %H:%M:%S', filename='myapp.log', filemode='w') 13 logging.getLogger(__name__) 14 logger=logging.getLogger(__name__) 15 logging.debug('this is debug message') 16 logging.info('this is info message') 17 logging.warning('this is warning message') 18 logging.error('this is error message') 19 logging.critical('this is critical message') 20 #logging.basicConfig()用法: 21 # level: 设置日志级别,默认为logging.WARNING 22 # filename: 指定日志文件名。 23 # filemode: 和file函数意义相同,指定日志文件的打开模式,'w'或'a' 24 # format: 指定输出的格式和内容 25 #format可输出内容: 26 # %(levelname)s: 打印日志级别名称 27 # %(filename)s: 打印当前执行程序名 28 # %(funcName)s: 打印日志的当前函数 29 # %(lineno)d: 打印日志的当前行号 30 # %(asctime)s: 打印日志的时间 31 # %(thread)d: 打印线程ID 32 # %(process)d: 打印进程ID 33 # %(message)s: 打印日志信息 34 # datefmt: 指定时间格式,同time.strftime() 35 # stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略
2、os模块
1 import os 2 # 1、查看不同操作系统 3 print(os.name) 4 #linux os.name 是posix 5 #Windows os.name 是 nt 6 7 #2、执行系统命令 8 print(os.system('ipconfig')) 9 #widonws格式为gkm 常用utf-8 10 context=os.popen('ipconfig').read() 11 #popen()返回的是一个file对象,,通过。read()来获取最后系统命令的结果 12 print(context.find('192.168.125.1')) 13 print(dir(os)) 14 #3、文件和目录的操作 15 16 # os.getcwd() 获得当前工作目录 17 # os.chdir('') 切换到目标目录 18 # os.listdir('') 列出字符串目录下的所有文件 19 # os.mkdir('') 创建目录 20 # s.remove('') 删除文件,文件不存在时会报错 21 # os.linesep 打印操作系统的分隔符,linux系统的分隔符\n,windows系统的分隔符\r\n,mac系统的分隔符\r 22 # os.path.join(os.getcwd(), 'aaa', ‘bbb’, ‘ccc’) 拼接出来多级目录:E:\test\aaa\bbb\ccc 23 # s.path.exists('') 判断目录是否存在 24 # s.path.split('') 把最后的一个目录或者文件和前面的目录分开,返回一个tuple 25 # os.path.splitext('') 把文件的后缀名和前面分开,返回一个tuple os.fork() 26 27 28 if not os.path.exists('test'): 29 #判断目录test是否存在 30 os.mkdir('test') 31 #不存在就创建test目录 32 else: 33 print('test ok') 34 35 a=os.path.join('.','aa','bb') 36 #合并目录 37 print(a) 38 print(os.path.dirname(r'F:\test.py'))
3、command模块
1 #commands模块 2 #只用于Linux系统下 3 import commands 4 cmd = 'ls /opt' 5 a = commands.getoutput(cmd) 6 #getoutput只有返回结果,,并不能进行判断 7 print(type(a)) 8 print(a) 9 cmd = 'ls /home/admin' 10 c = commands.getstatusoutput(cmd) 11 print(type(c)) 12 status, result = commands.getstatusoutput(cmd) 13 print(status) 14 print(result) 15 print(type(result)) 16 #commands.getstatusoutput 返回值是一个tuple类型 17 #第一个值接受状态码,,,返回结果为int类型,如果为0执行正常,否则异常 18 #第二个值接受返回结果,是各个str类型,
4、sys模块
1 # sys模块 2 #sys.argv获取程序参数 3 #sys.exit(n) 退出程序,0正常退出 4 #sys.stdin\stdout\stderr 包含与标准I/O 流对应的流对象,更好的控制输出 5 # sys.maxint 最大的Int值 6 #sys.path: 获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到 7 # sys.platform 返回操作系统平台名称 8 import sys 9 if __name__=='__main__': 10 print('sys.argv[0]=]0]'.format(sys.argv[0])) 11 #sys.argv[n]可以获取到python脚本后面传送进去的参数 12 print('sys.argv[1]=]1]'.format(sys.argv[1])) 13 print('sys.argv[2]=]2]'.format(sys.argv[2])) 14 sys.stdout.write('helloaaa\n') 15 print('hello') 16 name=raw_input('please input your name') 17 print('hello'+name) 18 age=sys.stdin.readline() 19 print(age) 20 f=open('1.log','w') 21 sys.stdout=f 22 print('aa\nhello') 23 24 #sys.text(n) 25 def hello(): 26 print('hello') 27 sys.exitfunc=hello 28 print('start') 29 sys.exit(1) 30 print('end')