1.日志记录模块 logging
日志的几个级别
debug
info
warning
error
critical
如:
import logging logger = logging.getLogger(__name__) #相当于重命名 logger.debug("debug") logger.info("info") logger.warning("warning") logger.error("error") logger.critical("critical")
结果为:warning error critical
通过运行的结果可以看到,默认只打印warning及以上的信息。
可以设置告警级别:
import logging logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger(__name__) logger.debug("debug") logger.info("info") logger.warning("warning") logger.error("error") logger.critical("critical")
结果为:DEBUG:__main__:debug INFO:__main__:info WARNING:__main__:warning ERROR:__main__:error CRITICAL:__main__:critical
2.OS模块
os模块包含普遍的操作系统功能。
(1)os.name——判断现在正在实用的平台,Windows 返回 ‘nt'; unix 返回’posix'.
import os
print(os.name)
结果为:nt #说明为Windows
>>> import os>>> print(os.name)posix #说明为Unix平台>>>
在使用的时候就可以据此判断:
import os if os.name == "nt": pass elif os.name == "posix": pass
(2)os.getcwd()——得到当前工作的目录,相当于Linux中的pwd。
import os
print(os.getcwd())
结果为:E:\python
(3)os.listdir()——列出指定目录下所有的文件和目录名,相当于Linux中的ls。
import os
print(os.listdir("c:"))
结果为:['$GetCurrent', '$Recycle.Bin', '$SysReset']
以列表的形式全部列举出来,其中没有区分目录和文件。
(4)os.remove()——删除指定文件。
import os os.remove("1.py") 直接删除当前目录下1.py文件
(5)os.rmdir()——删除指定目录。
(6)os.mkdir()——创建目录。
注意:这样只能建立一层,要想递归建立可用:os.makedirs()。
(7)os.path.isfile()——判断指定对象是否为文件。是返回True,否则False。
(8)os.path.isdir()——判断指定对象是否为目录。是True,否则False。
(9)os.path.exists()——检验指定的对象是否存在。是True,否则False。
在创建目录时,可以先进行判断,然后再创建。如:
import os if not os.path.exists("test"): os.mkdir("test")
(10)os.path.split()——返回路径的目录和文件名。
import os
print(os.path.split("urls.py"))
结果为:('', 'urls.py')
此处只是把前后两部分分开而已,就是找最后一个'/'。
(11)os.system()——执行命令。
os.system(cmd) 纯粹的执行系统命令,但是没有返回结果 result = os.popen(cmd) result.read() 这样你就可以对reuslt进行控制了
(12)os.chdir()——改变目录到指定目录,相当于Linux中的cd。
(13)os.path.abspath()——获得绝对路径
import os print(os.path.abspath("test"))
结果为:E:\python\test
3.sys模块
(1)sys.argv 获取传入程序中的参数
import sys print(sys.argv[0]) #代表文件名 print(sys.argv[1]) #传入的第一个参数 print(sys.argv[2]) #传入的第二个参数
(2)sys.stdout 重定向
f_handler=open('out.log', 'w') sys.stdout=f_handler print('hello')
相当于创建文件并写入内容。
4.random随机模块
(1)random.randint(a,b) 随机一个整数,a <= 随机数 <= b。
(2)random.randrange(1,100,2) 随机一个整数,但只能取1,3,5,7,9,11,13...
(3)random.sample([1,2,3,4,5],2)根据第二个参数取第一个参数的值,如当前:取[1,2,3,4,5]中随机的2个。
5.string模块
(1)string.ascii_letters 大小写字母
如:
import string print(string.ascii_letters)
结果为:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
(2)string.digits 数字
(3)string.ascii_lowercase 小写字母
(4)string.ascii_uppercase 大写字母
(5)string.printable 所有可打印字符
(6)string.punctuation 特殊字符
(7)string.hexdigits 数字,小写字母,大写字母
练习:1.掷1000次骰子,计算各个朝上数字出现的次数?
import random
class ShanZi(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,10001): 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 cishu(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)) def main(): #定义main函数,梳理流程。 shanzi = ShanZi() shanzi.count() shanzi.cishu() if __name__ == '__main__': main()
结果为:1:1665 2:1675 3:1680 4:1652 5:1696 6:1632
2.输出一个6位且包含大小写字母、数字的验证码?
import random import string print("".join(random.sample(string.hexdigits,6)))
结果为:E94Aa7