Python的logging模块、os模块、commands模块与sys模块

一、logging模块

import logging

logging.debug(‘This is debug message‘)
logging.info(‘This is info message‘)
logging.warning(‘This is warning message‘)

屏幕上打印:
WARNING:root:This is warning message

  默认情况下,logging将日志打印到屏幕,日志级别为WARNING;
  日志级别大小关系为:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,当然也可以自己定义日志级别。

    ● DEBUG:详细的信息,通常只出现在诊断问题上。

  ● INFO:确认一切按预期运行

  ● WARNING:一个警告,可能会有一些意想不到的事情发生了,或表明一些问题在不久的将来(例如。磁盘空间低”)。这个软件还能按预期工作

  ● ERROR:个更严重的问题,软件没能执行一些功能

  ● CRITICAL:一个严重的错误,这表明程序本身可能无法继续运行

  默认logging默认的日志级别是info

  通常情况下是将日志写入文件中,实例如下:

import logging
logging.basicConfig(level=__debug__,format=‘%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s‘,datefmt=‘ %Y/%m/%d %H:%M:%S‘, filename=‘momo.log‘, filemode=‘w‘)
logger = logging.getLogger(__name__)
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‘)

结果:

  

主要是通过logging.basicConfig函数进行操作,现在我们来介绍一下该函数参数的用法:

level: 设置日志级别,默认为logging.WARNING

filename: 指定日志文件名。

filemode: 和file函数意义相同,指定日志文件的打开模式,‘w‘或‘a‘

format: 指定输出的格式和内容,format可以输出很多有用信息,如上例所示:

%(levelname)s: 打印日志级别名称

%(filename)s: 打印当前执行程序名

%(funcName)s: 打印日志的当前函数

%(lineno)d: 打印日志的当前行号

%(asctime)s: 打印日志的时间

%(thread)d: 打印线程ID

%(process)d: 打印进程ID

%(message)s: 打印日志信息

datefmt: 指定时间格式,同time.strftime()

stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略

logging.getLogger([name]):创建一个日志对象:

返回一个logger实例,如果没有指定name,返回root logger。只要name相同,返回的logger实例都是同一个而且只有一个,即name和logger实例是一一对应的。这意味着,无需把logger实例在各个模块中传递。只要知道name,就能得到同一个logger实例。

logging.getLogger(__name__) 在上述实例中__name__就指的是__main__。

二、os模块

  os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
  os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
  os.curdir 返回当前目录: (‘.‘)

  os.makedirs(‘dirname1/dirname2‘) 可生成多层递归目录

 os.removedirs(‘dirname1‘) 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
  os.mkdir(‘dirname‘) 生成单级目录;相当于shell中mkdir dirname
  os.rmdir(‘dirname‘) 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
  os.listdir(‘dirname‘) 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
  os.remove() 删除一个文件
  os.rename("oldname","newname") 重命名文件/目录
  os.stat(‘path/filename‘) 获取文件/目录信息
  os.symlink(‘path/filename‘,‘ln_filename‘) 创建符号链接,源需绝对路径
  os.utime() 修改时间属性

  1.通过os获取系统类型

import os
print (os.name)

  结果:linux系统os.name是posix,windows系统的os.name是nt

  2.执行系统命令

context = os.popen(‘ipconfig‘).read()print (context.find(‘192.168.56.1‘))

  结果:328

  3.文件和目录的操作

print(os.listdir(‘.‘))
print (os.getcwd())
print (os.listdir(os.getcwd()))

os.chdir(r‘F:\momo‘)
print (os.getcwd())
os.mkdir(‘test‘)
os.remove(‘momo.log‘)
print (os.linesep)

if not os.path.exists(‘test‘):
    os.mkdir(‘test‘)
else:
    print (‘test is ok!‘)

a = os.path.join(‘.‘,‘aaa‘,‘bbb‘,‘ccc‘)
print (a)

print (os.path.dirname(r‘F:\test\test.py‘))

  

三、commands模块

  调用系统命令command模块提供了三种方法:cmd代表系统命令

1.commands.getoutput(cmd)

只返回执行shell命令的结果:

举个例子:

[[email protected] ~]# cat a.py

#!/usr/bin/env python

#-*- coding:utf-8 -*-

import commands

cmd = ‘ls /home/admin‘

a = commands.getoutput(cmd)

print(type(a))

print(a)

结果:

[[email protected] ~]# python a.py

<type ‘str‘>

nginx.conf

nginx_upstream_check_module-master.zip

test.py

commands是提供linux系统环境下支持使用shell命令的一个模块,在企业中,我们很多的脚本和环境都是在linux系统中跑起来的,

2. commands.getstatusoutput(cmd)

在上面我们在执行shell命令的时候,我们的shell命令可能执行报错,或者异常退出,我们就要有一个条件来判断shell最终执行的结果是什么,commands.getstatusoutput(cmd)的返回结果有两个值,

[[email protected] ~]# cat c.py

#!/usr/bin/env python

#-*- coding:utf-8 -*-

import commands

cmd = ‘ls /home/admin‘

c = commands.getstatusoutput(cmd)

print(type(c))

status, output = commands.getstatusoutput(cmd)

print(status)

print(output)

print(type(output))

结果:

[[email protected]host ~]# python c.py

<type ‘tuple‘>

0

nginx.conf

nginx_upstream_check_module-master.zip

test.py

<type ‘str‘>

解释:

Commands.getstatusoutput(cmd)的返回结果是一个tuple,第一个值是shell执行的结果,如果shell执行成功,返回0,否则,为非0,第二个是一个字符串,就是我们shell命令的执行结果,python通过一一对应的方式复制给status和output,这个就是python语言的巧妙之处。

四、sys模块

  sys模块提供了一系列有关Python运行环境的变量和函数。

1.sys.argv:可以用sys.argv获取当前正在执行的命令行参数的参数列表(list)。

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]))

2.  sys.stdin\stdout\stderr

功能:stdin , stdout , 以及stderr 变量包含与标准I/O 流对应的流对象. 如果需要更好地控制输出,而print 不能满足你的要求, 它们就是你所需要的. 你也可以替换它们, 这时候你就可以重定向输出和输入到其它设备( device ), 或者以非标准的方式处理它们。实例如下:

import sys
if __name__ == ‘__main__‘:
    print (‘####################‘)
    sys.stdout.write(‘hello huangdongju‘)
    print (‘hello world‘)

    name = raw_input(‘Please input your name:‘)
    print (‘hello ‘ + name)
    address = sys.stdin.readline()
    print (address)

    f = open(‘1.log‘,‘w‘)
    sys.stdout = f
    print (‘aaaaaaaaa‘)
    print (‘hello world‘)

3. 捕获sys.exit(n)调用

功能:执行到主程序末尾,解释器自动退出,但是如果需要中途退出程序,可以调用sys.exit函数,带有一个可选的整数参数返回给调用它的程序,表示你可以在主程序中捕获对sys.exit的调用。(0是正常退出,其他为异常).实例如下:

import sys
def hello():
    print (‘hello‘)
if __name__ == ‘__main__‘:
      sys.exitfunc = hello
    print (‘start‘)
    sys.exit(1)
    print (‘end‘)
时间: 2024-11-29 00:12:18

Python的logging模块、os模块、commands模块与sys模块的相关文章

(四)4-5 Python的logging、os和sys

logginglogging模块先看一个例子 import logging logging.debug("this is debug message") logging.info("this is info message") logging.warning("this is warning message") 运行结果: WARNING:root:this is warning message 注:程序中写了三句话,但是屏幕中只输出一个warn

day17——logging、os模块、commands模块、sys模块

logging的使用 日志是我们排查问题的关键利器,写好日志记录,当我们发生问题时,可以快速定位代码范围进行修改.Python有给我们开发者们提供好的日志模块,我们我们就来介绍一下logging模块: 首先,我们先来看一个例子: import logging logging.debug("This is debug message") logging.info("The is info message") logging.warning("This is

part10-1 Python常见模块(sys模块、os模块)

Python 有强大的第三方模块,这些第三方模块在实际运用中已经能实现很多的功能,通常不需要重复开发具有相同功能的模块.另外,Python 语言也内置了大量的模块,这些模块已经非常完善,例如对于常见的日期.时间.正则表达式.JSON支持.容器类等都有完善的模块.接下来学习 Python 内置的模块,不过这些模块还在不断的更新中,更详细的模块帮助可查看 Python 库的在线参考手册,https://docs.python.org/3/library/index.html. 一. sys 模块 s

python3 json、logging、sys模块

json模块 import json dic = {'name':'egon','age':32} # ------------------------------>序列化 f = open('json.txt','w') data = json.dumps(dic) print(data) print(type(data)) f.write(data) f.close() # ------------------------------>返序列化 f = open('json.txt','r

os模块,sys模块,hashlib

os模块:与操作系统做交互 os.path.join(__file__+新路径) os.path.split('绝对路径') 返回的路径粉两半,返回一个元组 os.path.basename() 获取path后面的文件名 os.path.dirname() 获取前面的路径 os.path.getsize() os.path.isdir()  判断是否为文件夹 os.path,isfile() 判断是否为文件 os.mwkedirs('a/b/c//d') 递归创建文件夹 os.removedir

第三十五篇 os模块、sys模块、json模块、pickle模块

目录 一.os模块 二.sys模块 三.json模块 dump和load 四.pickle模块 一.os模块 os模块和操作系统交互,主要用于文件操作 import os # test.py文件中 # os.mkdir() 一个路径参数和一个字符串参数.如果有路径参数,则在该路径下创建一个新的文件夹:如果无路径参数,则在当前文件的同级路径下创建一个新的文件夹 os.mkdir('king') # 创建了和test.py文件同级目录下的名为king的文件夹 # os.removedirs() 一个

python 常用模块 time random os模块 sys模块 json &amp; pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则

python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib  subprocess logging re正则 转自老男孩老师Yuan:http://www.cnblogs.com/yuanchenqi/articles/5732581.html 模块&包(* * * * *) 模块(modue)的概念: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,

python之logging模块1

4.日志格式说明 logging.basicConfig函数中,可以指定日志的输出格式format,这个参数可以输出很多有用的信息,如上例所示: %(levelno)s: 打印日志级别的数值%(levelname)s: 打印日志级别名称%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]%(filename)s: 打印当前执行程序名%(funcName)s: 打印日志的当前函数%(lineno)d: 打印日志的当前行号%(asctime)s: 打印日志的时间%(th

2018年04月25日 logging模块、os.name模块、sys模块、random模块、string模块

logging模块 官方文档:https://docs.python.org/3.6/library/logging.html ''' 日志记录模块 日志的几个级别 debug info warning error critical ''' import logging # logging.basicConfig(level=logging.DEBUG) logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(filename