时间模块 time
有三种方式表示时间:
- 时间戳 1513666926.428724
time.time() # 当前时间的时间戳,float类型,秒
- 元组(struct_time)
time.localtime()# 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’
time.strftime('%Y-%m-%d') # '2017-12-19'# %Y年 %m月 %d日 %X时分秒 %H时 %M分 %S秒
time.sleep()
几种时间形式转换

time.ctime() # 时间戳 => 字符串time.asctime() # 结构化时间 => 字符串
datatime
随机数模块 random
random.random() # 0 < x(float) < 1random.randint(min, max) # min <= x(int) <= maxrandom.randrange(min, max) # min <= x(int) < maxrandom.choice([1,2,5]) # list中随机抽取1个random.sample([1,2,5], 2) # list中随机抽取2个random.uniform(min, max) # min < x(float) < maxrandom.shuffle([1,2,4]) # 随机打乱
hashlib
提供了常用的摘要算法,MD5、SHA1、SHA128、SHA256等
MD5
import hashlibm = hashlib.md5() # 其他算法将md5替换即可# 加盐 hashlib.md5('salt'.encode('utf8'))m.update('hello'.encode('utf8))res = m.hexdigest
os
与操作系统交互的一个接口
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cdos.curdir 返回当前目录: ('.')os.pardir 获取当前目录的父目录字符串名:('..')os.makedirs('dirname1/dirname2') 可生成多层递归目录os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirnameos.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirnameos.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印os.remove() 删除一个文件os.rename("oldname","newname") 重命名文件/目录os.stat('path/filename') 获取文件/目录信息os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为:os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'os.system("bash command") 运行shell命令,直接显示os.environ 获取系统环境变量os.path.abspath(path) 返回path规范化的绝对路径os.path.split(path) 将path分割成目录和文件名二元组返回os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素os.path.exists(path) 如果path存在,返回True;如果path不存在,返回Falseos.path.isabs(path) 如果path是绝对路径,返回Trueos.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回Falseos.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回Falseos.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略os.path.getatime(path) 返回path所指向的文件或者目录的最后访问时间os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间os.path.getsize(path) 返回path的大小
os.stat('path/filename') 获取文件/目录信息stat 结构:st_mode: inode 保护模式st_ino: inode 节点号。st_dev: inode 驻留的设备。st_nlink: inode 的链接数。st_uid: 所有者的用户ID。st_gid: 所有者的组ID。st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据。st_atime: 上次访问的时间。st_mtime: 最后一次修改的时间。st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)。
sys
★ sys.argv 命令行参数List,第一个元素是程序本身路径★ sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值sys.exit(n) 退出程序,正常退出时exit(0)sys.version 获取Python解释程序的版本信息sys.platform 返回操作系统平台名称sys.maxint 最大的Int值(python2)
logging
日志模块
# 默认在屏幕上打印logging.debug('debug message')logging.info('info message')# 默认等级 高于等级才会打印logging.warning('warning message')# 默认格式: WARNING:root:warning messagelogging.error('error message')logging.critical('critical message')
配置
1. 通过config配置 只能打印屏幕或记录文件,不能同时logging.baseConfig(level=logging.DEBUG,format="%(asctime)s")baseConfig参数:filename:用指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中。filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。format:指定handler使用的日志显示格式。datefmt:指定日期时间格式。level:设置rootlogger(后边会讲解具体概念)的日志级别stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件(f=open(‘test.log’,’w’)),默认为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被忽略。format参数中可能用到的格式化字符串:%(name)s Logger的名字%(levelno)s 数字形式的日志级别%(levelname)s 文本形式的日志级别%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有%(filename)s 调用日志输出函数的模块的文件名%(module)s 调用日志输出函数的模块名%(funcName)s 调用日志输出函数的函数名%(lineno)d 调用日志输出函数的语句所在的代码行%(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示%(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒%(thread)d 线程ID。可能没有%(threadName)s 线程名。可能没有%(process)d 进程ID。可能没有%(message)s用户输出的消息
2. logger 推荐使用# 获取logger对象logger = logging.getLogger()# 文件流fh = logger.FileHandler("logging file")# 屏幕流sh = logger.StreamHandler()# 创建格式对象fm = logging.Formatter("%(asctime)s %(message)s")# 给流设置格式fh.setFormatter(fm) # 给文件流添加格式sh.setFormatter(fm) # 给屏幕流添加格式# 添加流logger.addHandler(fh) # 将日志写入文件logger.addHandler(sh) # 将日志在屏幕上输出# 设置等级logger.setLevel(logging.DEBUG)# 输出日志 将在文件和屏幕上logger.warning('logger warning message')
序列化模块
json
可跨语言,只能序列化基础类型
json 和 python 数据类型对象
| json | python |
|---|---|
| {} | dict |
| [] | list |
| “string” | str |
| 123.45 | int/float |
| true/false | True/False |
| null | None |
import jsonjson.dumps() # 序列化json.loads() # 反序列化
pickle
只能用python序列化和反序列化
能序列化任何类型
cPickle 使用C语言编写效率较高
try:import cPickle as pickleexcept ImportError:import picklepickle.dumps() # 序列化pickle.loads() # 反序列化
