logging模块
logging配置要点
日志级别对应有 5 个日志记录方法,分别为logger.debug,logger.info,logger.warning,logger.error,logger.critical。
- logging打印日志的例子
import logging
logging.basicConfig(level=logging.DEBUG)
logger=logging.getLogger(__name__)
# print(logger)
logger.info("this is info")
logger.error("this is error")
logger.warn("this is warning")
#输出
INFO:__main__:this is info
ERROR:__main__:this is error
WARNING:__main__:this is warning
GetLogger()方法
这是最基本的入口,该方法参数可以为空,默认的logger名称是root,如果在同一个程序中一直都使用同名的logger,其实会拿到同一个实例,使用这个技巧就可以跨模块调用同样的logger来记录日志。
import logging
logger=logging.getLogger(__name__)
print(logger)
#输出
<Logger __main__ (WARNING)>
basicConfig 函数
basicConfig函数用来配置 RootLogger
basicConfig 函数仅用来配置 RootLogger,rootLogger 是所有 Logger 的祖先 Logger,所以其他一切 Logger 会继承该 Logger 的配置。
从上面的 basicConfig 源码看,它可以有六个关键字参数,分别为:
filename:执行使用该文件名为 rootLogger 创建 FileHandler,而不是 StreamHandler
filemode:指定文件打开方式,默认是”a”
stream:指定一个流来初始化 StreamHandler。此参数不能和 filename 共存,如果同时提供了这两个参数,则 stream 参数被忽略
format:为 rootLogger 的 handler 指定输出格式
datefmt:指定输出的日期时间格式
level:设置 rootLogger 的日志级别使用样例:
logging.basicConfig(
filename = './log.txt',
filemode = 'a',
#stream = sys.stdout,
format = '%(levelname)s:%(message)s',
datefmt = '%m/%d/%Y %I:%M:%S',
level = logging.DEBUG
)
os模块
os常见的用法:
方法 | 说明 |
---|---|
os.mkdir | 创建目录 |
os.rmdir | 删除目录 |
os.rename | 重命名 |
os.remove | 删除文件 |
os.getcwd | 获取当前工作路径 |
os.walk | 遍历目录 |
os.path.join | 连接目录与文件名 |
os.path.split | 分割文件名与目录 |
os.path.abspath | 获取绝对路径 |
os.path.dirname | 获取路径 |
os.path.basename | 获取文件名或文件夹名 |
os.path.splitext | 分离文件名与扩展名 |
os.path.isfile | 判断给出的路径是否是一个文件 |
os.path.isdir | 判断给出的路径是否是一个目录 |
- os模块的例子
import os
# os.path.abspath:获取文件或目录的绝对路径
a=os.path.abspath("passwd")
print(a)
#os.path.dirname:获取文件或文件夹的路径
b=os.path.dirname('G:\python\passwd')
print(b)
#os.path.basename:获取文件名或文件夹名
c=os.path.basename('G:\python\passwd')
print(c)
#os.path.splitext:分离文件名与扩展名
d=os.path.splitext("G:\python\jiecheng.py")
print(d)
#os.path.split:分离目录与文件名
e=os.path.split("G:\python\jiecheng.py")
print(e)
#os.path.isfile/os.path.isdir 判断是不是文件和目录
f=os.path.isfile("G:\python\jiecheng.py")
print(f)
#os.walk遍历目录
for i,j,k in os.walk('G:/python/0test/'):
print(i,j,k)
# 输出
G:\python\passwd
G:\python
passwd
('G:\\python\\jiecheng', '.py')
('G:\\python', 'jiecheng.py')
True
G:/python/0test/ [] ['1.txt', '2.txt']
sys模块
sys模块提供了一系列有关Python运行环境的变量和函数。
sys常见用法
sys.argv
可以用sys.argv获取当前正在执行的命令行参数的参数列表(list)。
变量 | 解释 |
---|---|
sys.argv[0] | 当前程序名 |
sys.argv[1] | 第一个参数 |
sys.argv[0] | 第二个参数 |
- sys.stdout 与 print
当我们在 Python 中打印对象调用 print obj 时候,事实上是调用了 sys.stdout.write(obj+’\n’)
print 将你需要的内容打印到了控制台,然后追加了一个换行符
print 会调用 sys.stdout 的 write 方法
以下两行在事实上等价:
sys.stdout.write('hello'+'\n')
print 'hello'
random模块
random常见的用法
import random
print(random.random()) # 随机产生[0,1)之间的浮点值
print(random.randint(1, 6)) # 随机生成指定范围[a,b]的整数
print(random.randrange(1, 3)) # 随机生成指定范围[a,b)的整数
print(random.randrange(0, 101, 2)) ##随机生成指定范围[a,b)的指定步长的数(2--偶数)
print(random.choice([1, 2, 3, 4])) # 随机生成指定列表中的元素
print(random.choice(("abc", "123", "liu"))) # 随机生成指定元组中的元素
print(random.sample("hello", 3)) # 随机生成指定序列中的指定个数的元素
print(random.uniform(1, 10)) # 随机生成指定区间的浮点数
#输出
0.10557607466809082
6
1
34
l
4
abc
['o', 'h', 'e']
9.632110532832225
string模块
string模块主要用于对字符串进行操作。string里的许多特性都已经移植到str和unicode对象的方法里去了。下面主要讨论下string模块的常用方法。
string常见用法
import string
# whitespace -- a string containing all ASCII whitespace
# ascii_lowercase -- a string containing all ASCII lowercase letters
# ascii_uppercase -- a string containing all ASCII uppercase letters
# ascii_letters -- a string containing all ASCII letters
# digits -- a string containing all ASCII decimal digits
# hexdigits -- a string containing all ASCII hexadecimal digits
# octdigits -- a string containing all ASCII octal digits
# punctuation -- a string containing all ASCII punctuation characters
# printable -- a string containing all ASCII characters considered printable
print(string.ascii_letters)
print(string.ascii_lowercase)
print(string.ascii_uppercase)
print(string.digits)
print(string.hexdigits)
print(string.octdigits)
print(string.punctuation)
print(string.printable)
print(string.whitespace)
#输出
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
0123456789abcdefABCDEF
01234567
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
打印4位数验证码
print("".join(random.sample(string.ascii_letters + string.digits, 4))