logging模块
日志的几个级别
debug
info
warning
error
critical
基本用法
import logging
import sys
# 获取logger实例,如果参数为空则返回root logger
logger = logging.getLogger("AppName")
# 指定logger输出格式
formatter = logging.Formatter('%(asctime)s %(levelname)-8s: %(message)s')
# 文件日志
file_handler = logging.FileHandler("test.log")
file_handler.setFormatter(formatter) # 可以通过setFormatter指定输出格式
# 控制台日志
console_handler = logging.StreamHandler(sys.stdout)
console_handler.formatter = formatter # 也可以直接给formatter赋值
# 为logger添加的日志处理器
logger.addHandler(file_handler)
logger.addHandler(console_handler)
# 指定日志的最低输出级别,默认为WARN级别
logger.setLevel(logging.INFO)
# 输出不同级别的log
logger.debug('this is debug info')
logger.info('this is information')
logger.warn('this is warning message')
logger.error('this is error message')
logger.fatal('this is fatal message, it is same as logger.critical')
logger.critical('this is critical message')
# 2018-04-25 21:04:44,687 INFO : this is information
# 2018-04-25 21:04:44,698 WARNING : this is warning message
# 2018-04-25 21:04:44,698 ERROR : this is error message
# 2018-04-25 21:04:44,698 CRITICAL: this is fatal message, it is same as logger.critical
# 2018-04-25 21:04:44,699 CRITICAL: this is critical message
# 移除一些日志处理器
logger.removeHandler(file_handler)
os 模块
常见函数列表
os.sep:取代操作系统特定的路径分隔符
os.name:指示你正在使用的工作平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'。
os.getcwd:得到当前工作目录,即当前python脚本工作的目录路径。
os.getenv()和os.putenv:分别用来读取和设置环境变量
os.listdir():返回指定目录下的所有文件和目录名
os.remove(file):删除一个文件
os.stat(file):获得文件属性
os.chmod(file):修改文件权限和时间戳
os.mkdir(name):创建目录
os.rmdir(name):删除目录
os.removedirs(r“c:\python”):删除多个目录
os.system():运行shell命令
os.exit():终止当前进程
os.linesep:给出当前平台的行终止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'
os.path.split():返回一个路径的目录名和文件名
os.path.isfile()和os.path.isdir()分别检验给出的路径是一个目录还是文件
os.path.existe():检验给出的路径是否真的存在
os.listdir(dirname):列出dirname下的目录和文件
os.getcwd():获得当前工作目录
os.curdir:返回当前目录('.')
os.chdir(dirname):改变工作目录到dirname
os.path.isdir(name):判断name是不是目录,不是目录就返回false
os.path.isfile(name):判断name这个文件是否存在,不存在返回false
os.path.exists(name):判断是否存在文件或目录name
os.path.getsize(name):或得文件大小,如果name是目录返回0L
os.path.abspath(name):获得绝对路径
os.path.isabs():判断是否为绝对路径
os.path.normpath(path):规范path字符串形式
os.path.split(name):分割文件名与目录(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)
os.path.splitext():分离文件名和扩展名
os.path.join(path,name):连接目录与文件名或目录
os.path.basename(path):返回文件名
os.path.dirname(path):返回文件路径
例如:
import os
print(os.name)
if os.name == "nt":
cmd = "ipconfig"
elif os.name == "posix":
cmd = "ifconfig"
# os.system(cmd)
print(os.listdir("C:")) #列出当前目录, ls
# os.chdir("..") #改变目录, cd
print(os.listdir())
print(os.getcwd()) #pwd
# os.mkdir("test")
# os.remove("myapp.log")
# os.rmdir("test")
# os.rename("demon1.py", "demon111.py")
print(os.linesep)
# windows换行符\n\r linux换行符\n mac \r
if not os.path.exists("test"):
os.mkdir("test")
print(os.path.abspath("./"))
print(os.path.split("E:\LivePython1\第十一课"))
sys 模块
import sys
print(sys.argv) #命令行参数List,第一个元素是程序本身路径
print(sys.version) #获取Python解释程序的版本信息
print(sys.path) #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
print(sys.platform) #返回操作系统平台名称
sys.stdout.write('please:') #标准输出,写入字符串输出到屏幕
val = sys.stdin.readline()[:-1] #标准输入
print(val)
sys.exit(0) #退出程序,正常退出时exit(0)
random 模块
random.randint
random.randint()的函数原型为:random.randint(a, b),用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b
print random.randint(12, 20) #生成的随机数n: 12 <= n <= 20
print random.randint(20, 20) #结果永远是20
#print random.randint(20, 10) #该语句是错误的。下限必须小于上限。
下面一个例子,掷骰子游戏,,统计掷6000次,每个点数分别出现的次数
import random
class NumberCount(object):
def __init__(self):
self.number1 = 0
self.number2 = 0
self.number3 = 0
self.number4 = 0
self.number5 = 0
self.number6 = 0
def count(self):
for i in range(1, 6001):
number = random.randint(1, 6)
if number == 1:
self.number1 += 1
if number == 2:
self.number2 += 1
if number == 3:
self.number3 += 1
if number == 4:
self.number4 += 1
if number == 5:
self.number5 += 1
if number == 6:
self.number6 += 1
def getResult(self):
print("1出现的次数: {0}".format(self.number1))
print("2出现的次数: {0}".format(self.number2))
print("3出现的次数: {0}".format(self.number3))
print("4出现的次数: {0}".format(self.number4))
print("5出现的次数: {0}".format(self.number5))
print("6出现的次数: {0}".format(self.number6))
if __name__ == "__main__":
numberCount = NumberCount()
numberCount.count()
numberCount.getResult()
random.sample
random.sample的函数原型为:random.sample(sequence, k),从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列。
import random
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
slice = random.sample(list, 5) #从list中随机获取5个元素,作为一个片断返回
print(slice)
print(list) #原有序列并没有改变。