sys 模块

sys 模块是与 python 解释器交互的一个接口:

复制代码
sys.argv 命令行参数 List,第一个元素是程序本身路径
sys.exit(n) 退出程序,正常退出时 exit(0), 错误退出 sys.exit(1)
sys.version 获取 Python 解释程序的版本信息
sys.path 返回模块的搜索路径,初始化时使用 PYTHONPATH 环境变量的值
sys.platform 返回操作系统平台名称
sys.modules    sys.modules 是一个全局字典,该字典是 python 启动后就加载在内存中。每当程序员导入新的模块,sys.modules 将自动记录该模块。
           当第二次再导入该模块时,python 会直接到字典中查找,从而加快了程序运行的速度。它拥有字典所拥有的一切方
复制代码
序列化是将原本列表, 字典等内容转换成字符串的过程.(把变量从内存中变成可存储或传输的过程)

python 提供了两个模块可进行序列化, 分别是 pickle 和 json.

json,用于字符串 和 python 数据类型间进行转换
pickle,用于 python 特有的类型 和 python 的数据类型间进行转换
pickle 模块提供了四个功能:dumps、dump(序列化,存)、loads(反序列化,读)、load (不仅可以序列化字典,列表…可以把 python 中任意的数据类型序列化)

  • View Code
    with open(‘pickle_file’,‘rb’) as f: #可以多次 dump 和多次 load
    while True:
    try:
    ret = pickle.load(f)
    print(ret,type(ret))
    except EOFError:
    break

json 模块也提供了四个功能:dumps、dump、loads、load

import json
dic = {‘k1’:‘v1’,‘k2’:‘v2’,‘k3’:‘v3’}
str_dic = json.dumps(dic) #序列化:将一个字典转换成一个字符串
print(type(str_dic),str_dic)#<class ‘str’> {“k3”: “v3”, “k1”: “v1”, “k2”: “v2”}
#注意,json 转换完的字符串类型的字典中的字符串是由 "" 表示的

dic2 = json.loads(str_dic) #反序列化:将一个字符串格式的字典转换成一个字典
#注意,要用 json 的 loads 功能处理的字符串类型的字典中的字符串必须由 "" 表示
print(type(dic2),dic2)#<class ‘dict’> {‘k1’: ‘v1’, ‘k2’: ‘v2’, ‘k3’: ‘v3’}

list_dic = [1,[‘a’,‘b’,‘c’],3,{‘k1’:‘v1’,‘k2’:‘v2’}]
str_dic = json.dumps(list_dic) #也可以处理嵌套的数据类型
print(type(str_dic),str_dic)#<class ‘str’> [1, [“a”, “b”, “c”], 3, {“k1”: “v1”, “k2”: “v2”}]
list_dic2 = json.loads(str_dic)
print(type(list_dic2),list_dic2)#<class ‘list’> [1, [‘a’, ‘b’, ‘c’], 3, {‘k1’: ‘v1’, ‘k2’: ‘v2’}]

import json
f = open(‘json_file’,‘w’)
dic = {‘k1’:‘v1’,‘k2’:‘v2’,‘k3’:‘v3’}
json.dump(dic,f) #dump 方法接收一个文件句柄,直接将字典转换成 json 字符串写入文件
f.close()

f = open(‘json_file’)
dic2 = json.load(f) #load 方法接收一个文件句柄,直接将文件中的 json 字符串转换成数据结构返回
f.close()
print(type(dic2),dic2)

import json
f = open(‘file’,‘w’)
json.dump({‘国籍’:‘中国’},f)
ret = json.dumps({‘国籍’:‘中国’})
f.write(ret+‘\n’)
json.dump({‘国籍’:‘美国’},f,ensure_ascii=False)
ret = json.dumps({‘国籍’:‘美国’},ensure_ascii=False)
f.write(ret+‘\n’)
f.close()