模块单元学习笔记(日志记录模块&os模块&sys)


一、日志记录模块

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

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


案例一:
import logging

# logging.basicConfig(level=logging.DEBUG)

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='myapp.log', filemode='w')


logger = logging.getLogger(__name__)


def hello():
print("hello world")

def main():
logger.info("开始执行main函数")
print("##"*10)
hello()
logger.info("调用hello() 函数")
try:
a = 2/0
f = open("demon1.py", "r")
except Exception as e:
logger.error("除数不能为0")
finally:
logger.warning("文件没有正常关闭")
main()

执行结果如下:


二、os模块

os.name
如果结果为nt, 则为windows系统,
如果结果为posix, 则为unix系统

os.system(cmd) 纯粹的执行系统命令,但是没有返回结果
result = os.popen(cmd)
result.read() 这样你就可以对reuslt进行控制了


案例二:
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("./"))
执行结果:


三、sys模块
案例四:
import sys
print(sys.argv[1])
print(sys.argv[2])
print(sys.stdout)
sys.stdout.write("allalallala")

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

四、random
随机模块
random.randint(a, b)

案例五:
import random

print(random.randrange(1, 100, 2))
print(random.sample([1, 2, 3, 4, 5, 6, 7], 2))

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模块

import random

random模块 random.random() 0-1 random.randint(a, b) a<n<b 整型 random.uniform(10, 20) 10<n<20 浮点型 random.randrange(10, 100, 2),结果相当于从[10, 12, 14, 16, ... 96, 98]序列中获取一个随机数。 random.sample的函数原型为:random.sample(sequence, k),从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列。

六、string模块

案例六:
import string

print(string.ascii_letters) 生成所有字母
print(string.digits) 生成所有数字
print(string.ascii_lowercase) 生产所有小写字母
print(string.ascii_uppercase) 生产所有大写字母
print(string.printable) 包含所有可打印字符的字符串
print(string.punctuation) 找出字符串中的所有的标点
print(string.hexdigits) 十六进制数字

执行效果:


print("".join(random.sample(string.ascii_letters + string.digits, 4)))

随机生产4个密码执行效果:

 

猜你喜欢

转载自www.cnblogs.com/iwss/p/8948583.html