python模块(一)
1.logging
import logging
logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')
默认情况下,logging将日志打印到屏幕,日志级别大小关系为:
CRITICAL>ERROR>WARNING>INFO>DEBUG>NOTSET,当然也可以自定义日志级别
DEBUG:详细的信息,通常只出现在诊断问题上.
INFO:确认一切按预期运行.
WARNING:一个警告,可能会有一些意想不到的事情
发生了,或表明一些问题将在不久的将来(例如,'磁盘空间低').这个软件还能按预期工作.
ERROR:一个更严重的问题,这表明程序本身可能无法继续运行.
CRITICAL:一个严重的错误,这表明程序本身可能无法继续运行.
logging默认的日志级别是info
配置日志级别:
logging.basicConfig(level=__debug__,format='')
logger=logging.getLogger(__name__)
__name__指的就是__main__
2.os
通过os模块调用系统命令,
获得路径,获取操作系统的类型等都是使用该模块
1.通过os获取系统类型
import os
print(os.name)
这个就是查看我们系统的类型,如果是windows系统,os.name='nt',
如果是linux系统,os.name='posix',
2.执行系统命令
import os
os.system('ipconfig')
content=os.popen('ipconfig').read()
print(content.find('192.168.48.1'))
该代码调用了windows系统的ipconfig命令,ipconfig是用来查看windows系统
用os.popen获取系统命令执行的结果,方法返回一个file对象,
通过file.read()来获得最后系统命令最终结果;
3.文件和目录的操作
import os
print(os.getcwd())
获得路径
os.chdir('d:')//进入d盘
print(os.getcwd())//当前文件的路径
os.chdir(r'E:\test')//r表示不需要转义
#当前目录切换到d:目录下,再切换回来
print(os.listdir(os.getcwd()))
#列出C:\Python27目录下的文件
os.mkdir('abc')
在当前目录下创建abc目录;
os.remove('1.txt')
删除当前目录下的1.txt文件,如果文件不存在会报错.
print(os.linesep)
打印操作系统的分隔符,linux系统的分隔符\n,windows系统的分隔符\r\n
mac系统的分隔符\r
print(os.path.join(os.getcwd(),'abc.txt'))
print(os.path.islink(os.getcwd()))
print(os.path.join(os.getcwd(),'abc.txt'))
只是拼接,并不创建
path1=os.path.join(os.getcwd(),'abc.txt')
print(os.path.split(path1))
把最后文件和目录分开;
print(os.path.splitdrive(path1))
把最初的目录和后面分开;
print(os.path.splitext(path1))
把目录和后缀名分开
os.path.dirname(r'E:\test\test.py')
获得E:\test\test.py文件的目录
if not os.path.exists('test'):
os.makedirs('test')
else:
print('test mulu is exist')
os.path.join(os.getcwd,'aaa','bbb','ccc')
拼接出来多级目录
3.command
commands.getoutput(cmd)//只有返回结果,没法判断执行结果是否正常;
只返回执行shell命令的结果,shell的变量赋值不能有空格
import commands
cmd='ls /home/admin'
a=commands.getoutput(cmd)
print(type(a))
print(a)
cmd = 'ps -ef'
status,result =commands.getstatusoutput(cmd)
第一个值接收状态码,int类型, 返回0,说明执行正常
第二个值接收返回结果,返回str类型
print(type(result))
print(type(status))
4.sys
1.通过sys模块获取程序参数
import sys
print(argv[0])第一个参数是文件本身
2.sys.stdin\stdout\stderr
功能:stdin,stdout,以及stderr变量包含与标准I/O流对应的流对象.如果需要
更好地控制输出,而print不能满足你的需求,它们就是所需要.
2.1sys.stdout 与print
当我们在python中打印对象用print obj 的 时候,事实上是调用了sys.stdout.write(obj+'\n')
ansible -i 1.txt all -m shell -a 'w'
2.2sys.stdin与raw_input
import sys
name=raw_input('raw_input_name:')
print(name)
age=sys.stdin.readline('Please input your age:')
print(age)
f=open('1.log','w')
sys.stdout=f
print 'hello'
在当前目录下,生成一个1.log,文件内容为hello
def hello():
print('hello world')
sys.exitfunc=hello
print('start')
sys.exit(1) 退出自动调用hello
print('end')