时间模块 time

有三种方式表示时间:

  • 时间戳 1513666926.428724
  1. time.time() # 当前时间的时间戳,float类型,秒
  • 元组(struct_time)
  1. time.localtime()
  2. # time.struct_time(tm_year=2017, tm_mon=12, tm_mday=19, tm_hour=15, tm_min=8, tm_sec=16, tm_wday=1, tm_yday=353, tm_isdst=0)
  • 格式化的时间字符串 ‘2017-10-10’
  1. time.strftime('%Y-%m-%d') # '2017-12-19'
  2. # %Y年 %m月 %d日 %X时分秒 %H时 %M分 %S秒
  1. time.sleep()

几种时间形式转换

image.png

  1. time.ctime() # 时间戳 => 字符串
  2. time.asctime() # 结构化时间 => 字符串

datatime

随机数模块 random

  1. random.random() # 0 < x(float) < 1
  2. random.randint(min, max) # min <= x(int) <= max
  3. random.randrange(min, max) # min <= x(int) < max
  4. random.choice([1,2,5]) # list中随机抽取1个
  5. random.sample([1,2,5], 2) # list中随机抽取2个
  6. random.uniform(min, max) # min < x(float) < max
  7. random.shuffle([1,2,4]) # 随机打乱

hashlib

提供了常用的摘要算法,MD5、SHA1、SHA128、SHA256等

MD5

  1. import hashlib
  2. m = hashlib.md5() # 其他算法将md5替换即可
  3. # 加盐 hashlib.md5('salt'.encode('utf8'))
  4. m.update('hello'.encode('utf8))
  5. res = m.hexdigest

os

与操作系统交互的一个接口

  1. os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
  2. os.chdir("dirname") 改变当前脚本工作目录;相当于shellcd
  3. os.curdir 返回当前目录: ('.')
  4. os.pardir 获取当前目录的父目录字符串名:('..')
  5. os.makedirs('dirname1/dirname2') 可生成多层递归目录
  6. os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
  7. os.mkdir('dirname') 生成单级目录;相当于shellmkdir dirname
  8. os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shellrmdir dirname
  9. os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
  10. os.remove() 删除一个文件
  11. os.rename("oldname","newname") 重命名文件/目录
  12. os.stat('path/filename') 获取文件/目录信息
  13. os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
  14. os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
  15. os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为:
  16. os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
  17. os.system("bash command") 运行shell命令,直接显示
  18. os.environ 获取系统环境变量
  19. os.path.abspath(path) 返回path规范化的绝对路径
  20. os.path.split(path) path分割成目录和文件名二元组返回
  21. os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
  22. os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
  23. os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
  24. os.path.isabs(path) 如果path是绝对路径,返回True
  25. os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
  26. os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False
  27. os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
  28. os.path.getatime(path) 返回path所指向的文件或者目录的最后访问时间
  29. os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
  30. os.path.getsize(path) 返回path的大小
  1. os.stat('path/filename') 获取文件/目录信息
  2. stat 结构:
  3. st_mode: inode 保护模式
  4. st_ino: inode 节点号。
  5. st_dev: inode 驻留的设备。
  6. st_nlink: inode 的链接数。
  7. st_uid: 所有者的用户ID
  8. st_gid: 所有者的组ID
  9. st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据。
  10. st_atime: 上次访问的时间。
  11. st_mtime: 最后一次修改的时间。
  12. st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)。

sys

  1. sys.argv 命令行参数List,第一个元素是程序本身路径
  2. sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
  3. sys.exit(n) 退出程序,正常退出时exit(0)
  4. sys.version 获取Python解释程序的版本信息
  5. sys.platform 返回操作系统平台名称
  6. sys.maxint 最大的Int值(python2)

logging

日志模块

  1. # 默认在屏幕上打印
  2. logging.debug('debug message')
  3. logging.info('info message')
  4. # 默认等级 高于等级才会打印
  5. logging.warning('warning message')
  6. # 默认格式: WARNING:root:warning message
  7. logging.error('error message')
  8. logging.critical('critical message')

配置

  1. 1. 通过config配置 只能打印屏幕或记录文件,不能同时
  2. logging.baseConfig(
  3. level=logging.DEBUG,
  4. format="%(asctime)s"
  5. )
  6. baseConfig参数:
  7. filename:用指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中。
  8. filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。
  9. format:指定handler使用的日志显示格式。
  10. datefmt:指定日期时间格式。
  11. level:设置rootlogger(后边会讲解具体概念)的日志级别
  12. stream
  13. 用指定的stream创建StreamHandler
  14. 可以指定输出到sys.stderr,sys.stdout或者文件(f=open(‘test.log’,’w’)),
  15. 默认为sys.stderr
  16. 若同时列出了filenamestream两个参数,则stream参数会被忽略。
  17. format参数中可能用到的格式化字符串:
  18. %(name)s Logger的名字
  19. %(levelno)s 数字形式的日志级别
  20. %(levelname)s 文本形式的日志级别
  21. %(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
  22. %(filename)s 调用日志输出函数的模块的文件名
  23. %(module)s 调用日志输出函数的模块名
  24. %(funcName)s 调用日志输出函数的函数名
  25. %(lineno)d 调用日志输出函数的语句所在的代码行
  26. %(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
  27. %(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
  28. %(asctime)s 字符串形式的当前时间。默认格式是 2003-07-08 16:49:45,896”。逗号后面的是毫秒
  29. %(thread)d 线程ID。可能没有
  30. %(threadName)s 线程名。可能没有
  31. %(process)d 进程ID。可能没有
  32. %(message)s用户输出的消息
  1. 2. logger 推荐使用
  2. # 获取logger对象
  3. logger = logging.getLogger()
  4. # 文件流
  5. fh = logger.FileHandler("logging file")
  6. # 屏幕流
  7. sh = logger.StreamHandler()
  8. # 创建格式对象
  9. fm = logging.Formatter("%(asctime)s %(message)s")
  10. # 给流设置格式
  11. fh.setFormatter(fm) # 给文件流添加格式
  12. sh.setFormatter(fm) # 给屏幕流添加格式
  13. # 添加流
  14. logger.addHandler(fh) # 将日志写入文件
  15. logger.addHandler(sh) # 将日志在屏幕上输出
  16. # 设置等级
  17. logger.setLevel(logging.DEBUG)
  18. # 输出日志 将在文件和屏幕上
  19. logger.warning('logger warning message')

序列化模块

json

可跨语言,只能序列化基础类型
json 和 python 数据类型对象

json python
{} dict
[] list
“string” str
123.45 int/float
true/false True/False
null None
  1. import json
  2. json.dumps() # 序列化
  3. json.loads() # 反序列化

pickle

只能用python序列化和反序列化
能序列化任何类型
cPickle 使用C语言编写效率较高

  1. try:
  2. import cPickle as pickle
  3. except ImportError:
  4. import pickle
  5. pickle.dumps() # 序列化
  6. pickle.loads() # 反序列化