python内置模块

mac2022-06-30  33

 

logging模块

日志一共分为五个等级,从低到高依次是debug、info、warning、error、critical debug: 详细的所有信息 info:     确认一个按期运行 warning:一些意想不到的事情发生了,或者一些问题在不久的将来会出现 error:   更严重的问题,软件没能执行一些功能 critical: 一个严重的错误,这表明程序本身可能无法继续运行

 将日志输出到控制台

import logging logger = logging.debug("this is debug") logger = logging.info("this is info") logger = logging.warning("this is warning") logger = logging.error("this is error") logger = logging.critical("this is critical") 结果: WARNING:root:this is warning ERROR:root:this is error CRITICAL:root:this is critical

 

使用logging.basicConfig()设置日志的一些相关信息,如级别、格式等。

import logging logging.basicConfig(level=logging.DEBUG) logger = logging.debug("this is debug") logger = logging.info("this is info") logger = logging.warning("this is warning") logger = logging.error("this is error") logger = logging.critical("this is critical") 结果: DEBUG:root:this is debug INFO:root:this is info WARNING:root:this is warning ERROR:root:this is error CRITICAL:root:this is critical

 

设置日志格式,输入到指定文件

import logging 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='1.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')

在当前文件夹里面生成了一个名为1.log的文件,文件格式如下:

2018/04/25 08:39:46 demo1.py[line:10] DEBUG This is debug message 2018/04/25 08:39:46 demo1.py[line:11] INFO This is info message 2018/04/25 08:39:46 demo1.py[line:12] 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被忽略 logging.getLogger([name]):创建一个日志对象

 

os模块

import os os.system(cmd) # 执行系统命令,但是没有返回结果 ''' nt 为windows系统 posix 为unix系统 '''

如果需要对结果进行处理,我们可以这样做:

result = os.popen(cmd) result.read()

为了让一段代码,既可以在windows下运行,又可以在linux下运行。

import os if os.name == "nt": cmd = "ipconfig" elif os.name == "posix": cmd = "ifconfig" os.system(cmd)

相关用法:

os.listdir(".") # 列出当前目录 os.chdir("/tmp") # 改变目录 os.getcwd() # 获取当前路径 os.mkdir("test") # 创建目录 os.rmdir("test") # 删除目录 os.rename("test","test1") #重命名 os.linesep # 给出当前平台使用的行终止符 # windows 换行符 \n\r # linux 换行符 \n

判断一个文件是否存在,如果不存在,就创建该目录

import os if not os.path.exists("test"): os.mkdir("test")

查看绝对路径

os.path.abspath("test")

 

random模块

random()函数返回一个随机生成的实数。

import random # 在1-100内生成一个随机数 print(random.randint(1,100)) # 在1-100内生成一个随机数,每隔两个数取一个数 print(random.randrange(1,100,2)) # [1, 2, 3, 4, 5, 6, 7]中随机取出2个数 print(random.sample([1, 2, 3, 4, 5, 6, 7], 2))

抛掷一枚骰子1000次,统计每一面出现的次数:

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,1001): 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()

 

string模块

import string print(string.ascii_letters) # 生成所有的字母包括大小写 # abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ print(string.digits) # 生成所有的数字 # 0123456789 print(string.ascii_lowercase) # 生成所有的小写字母 # abcdefghijklmnopqrstuvwxyz print(string.ascii_uppercase) # 生成所有的大写字母 # ABCDEFGHIJKLMNOPQRSTUVWXYZ print(string.printable) # 生成所有可打印字符 # 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ print(string.punctuation) # 申城所有特殊字符 # !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ print(string.hexdigits) # 生成所有十六进制的字符串 # 0123456789abcdefABCDEF

生成随机六位验证码

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

 

转载于:https://www.cnblogs.com/yangjian319/p/8946967.html

最新回复(0)