python学习-0425

一、Logging 日志模块

     Logging 日志模块的作用就是打印日志

    日志级别分为:CRITICAL>ERROR>WARING>INFO>DEBUG

  •     DEBUG:详细的信息,通常只出现在诊断问题上。
  •    INFO:确认一切按预期运行
  • WARNING:一个警告,可能会有一些意想不到的事情发生了,或表明一些问题在不久的将来(例如。磁盘空间低”)。这个软件还能按预期工作
  • ERROR:严重的问题,软件没能执行一些功能
  • CRITICAL:严重的错误,这表明程序本身可能无法继续运行

    示例:

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='log.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')

  输出结果:

    在当前目录生成一个log.log日志,日志内容如下:

2018/04/25 23:57:43 demo1.py[line:16] DEBUG This is debug message
2018/04/25 23:57:43 demo1.py[line:17] INFO This is info message
2018/04/25 23:57:43 demo1.py[line:18] WARNING This is warning 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被忽略

    二、OS模块

    OS模块主要用于调用系统命令

  •     使用os查看系统类型,nt为Windows,posix为unix
  •     os.system(cmd)   纯粹的执行系统命令,但是没有返回结果
           result = os.popen(cmd)
            result.read()  这样你就可以对reuslt进行控制了

   常用示例:

import os
result =os.name
#查看系统ip,判断如果是windos则执行‘ipconfig’如果是unix则执行‘ifconfig’
if result == 'nt':
    cmd = 'ipconfig'
elif result == 'posix':
    cmd = 'ifconfig'
#没有返回结果
#os.system(cmd)
#有返回结果,可以对结果进行操作
ip_result = os.popen(cmd)
print(ip_result.read())

OS模块中对目录和文件的常用操作:

#列出目录下的文件
print(os.listdir('.'))
#获取文件路径
print(os.getcwd())
print(os.listdir(os.getcwd()))
#改变目录
os.chdir(r'Y:\PycharmProjects')
print(os.getcwd())
#新建文件夹
os.mkdir('Y:\\test')
#删除文件夹
os.removedirs('test')
#判断文件是否存在
if not os.path.exists('111'):
    os.mkdir('111')
else:
    print('文件已经存在了')
#打印操作系统的分隔符,linux的为\n  windows的为\r\n mac系统的为\r
print(os.linesep())
#拼接路径,并不创建
a=os.path.join(os.getcwd(),'cc')
print(a)
#获取上一级目录
print(os.path.dirname(r'Y:\PycharmProjects'))

三、random模块

    random随机模块,用于生成随机数

  • random.randint(a, b), 随机生成一个指定范围内的数
import random  
print(random.randint(1,10))  
 输出结果:打印1-10中随机一个数  

  • random.randrange() 随机生成一个指定范围的数,并指定增长数
print(random.randrange(10, 20, 2))
   解释:相当于从[10,12,14,16,18,20]中生成一个随机数
  • random.sample()  从指定序列中随机获取指定长度的数并随机排列,sample不会修改原有序列。
print(random.sample([1, 2, 2, 4, 6, 9, 0], 3))

练习题1:模拟掷骰子6000此,统计骰子每个面出现的次数

#模拟掷骰子6000此,统计骰子每个面出现的次数
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)
            #统计骰子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()

练习题2:在字母和数字中随机生成一个6位的验证码

print("".join(random.sample(string.ascii_letters + string.digits, 6)))
解释:使用字符串中.ascii_letters和.digits生成全部字母(a-z,A-Z)和0-9的数字,并传入random.sample函数中,并指定指定长度为6即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值