模块2
一、os模块
-
作用:负责程序与操作系统的交互,提供了访问操作系统底层的接口,多用于文件处理。
-
方法
方法 | 详解 |
---|---|
os.getcwd() | 获取当前工作目录,即当前python脚本工作的目录路径 |
os.chdir("dirname") | 改变当前脚本工作目录;相当于shell下cd |
os.curdir | 返回当前目录: ('.') |
os.pardir | 获取当前目录的父目录字符串名:('..') |
os.makedirs('dirname1/dirname2') | 可生成多层递归目录 |
os.removedirs('dirname1') | 若目录为空,则删除,并递归到上一级目录,若上级目录也为空,则删除,依此类推 |
os.mkdir('dirname') | 生成单级目录;相当于shell中mkdir dirname |
os.rmdir('dirname') | 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname |
os.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不存在,返回False |
os.path.isabs(path) | 如果path是绝对路径,返回True |
os.path.isfile(path) | 如果path是一个存在的文件,返回True。否则返回False |
os.path.isdir(path) | 如果path是一个存在的目录,则返回True。否则返回False |
os.path.join(path1[, path2[, ...]]) | 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 |
os.path.getatime(path) | 返回path所指向的文件或者目录的最后存取时间 |
os.path.getmtime(path) | 返回path所指向的文件或者目录的最后修改时间 |
os.path.get**size(path)** | 返回path的大小 |
二、sys模块
-
作用:负责程序与python解释器的交互,提供了一系列的函数变量,用于操控python的运行环境。
-
方法
方法 | 详解 |
---|---|
sys.argv | 命令行参数List,第一个元素是程序本身路径 |
sys.modules.keys() | 返回所有已经导入的模块列表 |
sys.exc_info() | 获取当前正在处理的异常类,exc_type、exc_value、exc_traceback当前处理的异常详细信息 |
sys.exit(n) | 退出程序,正常退出时exit(0) |
sys.hexversion | 获取Python解释程序的版本值,16进制格式如:0x020403F0 |
sys.version | 获取Python解释程序的版本信息 |
sys.maxint | 最大的Int值 |
sys.maxunicode | 最大的Unicode值 |
sys.modules | 返回系统导入的模块字段,key是模块名,value是模块 |
sys.path | 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 |
sys.platform | 返回操作系统平台名称 |
sys.stdout | 标准输出 |
sys.stdin | 标准输入 |
sys.stderr | 错误输出 |
sys.exc_clear() | 用来清除当前线程所出现的当前的或最近的错误信息 |
sys.exec_prefix | 返回平台独立的python文件安装的位置 |
sys.byteorder | 本地字节规则的指示器,big-endian平台的值是'big',little-endian平台的值是'little' |
sys.copyright | 记录python版权相关的东西 |
sys.api_version | 解释器的C的API版本 |
三、json和pickle模块
-
序列化
-
定义:把变量从内存中编程课存储或传输的过程
-
序列化的优点
-
持久保存状态:内存是无法永久保存数据的,当程序运行了一段时间,我们断电或者重启程序,内存中关于这个程序的之前一段时间的数据(有结构)都被清空了。但是在断电或重启程序之前将程序当前内存中所有的数据都保存下来(保存到文件中),以便于下次程序执行能够从文件中载入之前的数据,然后继续执行,这就是序列化。
-
跨平台数据交互:序列化时不仅可以把序列化后的内容写入磁盘,还可以通过网络传输到别的机器上,如果收发的双方约定好实用一种序列化的格式,那么便打破了平台/语言差异化带来的限制,实现了跨平台数据交互。
-
Json
-
作用:用于字符串和python数据类型间进行转换
-
json数据类型与python数据类型对应关系表
Json类型 | Python类型 |
---|---|
{} | dict |
[] | list |
"string" | str |
520.13 | int或float |
true/false | True/False |
null | None |
-
- dumps方法
import json dic = {'k1':'v1','k2':'v2','k3':'v3'} str_dic = json.dumps(dic) print(str_dic) 输出 {"k1": "v1", "k2": "v2", "k3": "v3"}
-
- loads方法
import json dic = {'k1':'v1','k2':'v2','k3':'v3'} str_dic = json.dumps(dic) dic2 = json.loads(str_dic) print(dic2) 输出 {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
-
- dump方法
import json f = open('json_file','w') dic = {'k1':'v1','k2':'v2','k3':'v3'} json.dump(dic,f) f.close()
-
- load方法
f = open('json_file') dic2 = json.load(f) f.close()
-
用于python特有的类型和python数据类型间进行转换
-
与json的四种使用方法一样
四、logging模块
import logging # 日志级别(如果哦不设置,默认显示30以上) # v1 logging.info('info') # 10 logging.debug('debug') # 20 logging.warning('wraning') # 30 logging.error('error') # 40 logging.critical('critical') # 50 # v2--> 添加设置 logging.basicConfig(filename='20190927.log', format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S %p', level=10) username = 'nick' goods = 'bianxingjingang' logging.info(f'{username}购物{goods}成功') # 10 # v3--> 添加配置 # 1. 配置logger对象 nick_logger = logging.Logger('nick') json_logger = logging.Logger('jason') # 配置格式 formmater1 = logging.Formatter('%(asctime)s - %(name)s -%(thread)d - %(levelname)s -%(module)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S %p ', ) formmater2 = logging.Formatter('%(asctime)s : %(message)s', datefmt='%Y-%m-%d %H:%M:%S %p', ) formmater3 = logging.Formatter('%(name)s %(message)s', ) # 3.配置handler -->往文件打印or往终端打印 h1 = logging.FileHandler('nick.log') h2 = logging.FileHandler('json.log') sm = logging.StreamHandler() # 4. 给handler配置格式 h1.setFormatter(formmater1) h2.setFormatter(formmater2) sm.setFormatter(formmater3) # 5. 把handler绑定给logger对象 nick_logger.addHandler(h1) nick_logger.addHandler(sm) json_logger.addHandler(h2) # 6. 直接使用 nick_logger.info(f'nick 购买 变形金刚 4个') # json_logger.info(f'json 购买 变形金刚 10个')