常用模块——sys,pickle,json
2016-10-10 17:35
471 查看
sys模块
argv:以命令行形式运行时,跟在python命令后的数据,将这些数据以list形式返回,第一个参数是当前运行的python文件名。如:D:\python\workspace>python demo.py xx oo yy 11-231 ['demo.py', 'xx', 'oo', 'yy', '11-231'] # 输出python后跟的所有参数,以空格分隔一个个命令
path:python要搜索的模块的路径。因此,修改该值可以修改python搜索的目录。
pickle
用于序列化的模块。序列化后的对象可以写入磁盘以及在网络上传输等。dumps():将任意对应序列化成bytes。
dump():将任意对象序列化到指定的文件中。如:
import os import pickle class Demo(object): pass d = Demo() s = pickle.dumps(d) print(s) # 序列化成bytes f = open(os.path.join('.','aaa.txt'), 'wb+') pickle.dump(d,f)
要注意:由于序列化后为bytes,所以打开文件时必须以rb,wb,ab等二进制模式打开,否则会报错。
load():反序列化一个对象。如:
f = open(os.path.join('.','aaa.txt'), 'rb+') d = pickle.load(f)
json
用于处理跟json相关的模块。常用方法与pickle类似。json中,{}对应的是dict,[]对应的是list。方法中带s的都是转换成json字符串,不带的就是将转换的json写入到某个文件中。dumps():将一个dict或list转换成json字符串。dumps可以接受一个关键字为default的函数,该函数用于将一个obj转换成可序列化的对象——dict或者list。可以通过该参数将任意对象转换成json。如:
import json class Demo(object): def __init__(self, age,name): self.age = age self.name = name def obj2json(obj): # obj就是要转换成json的对象 return { 'age':obj.age, 'name':obj.name } d = Demo(22,'lisixx') s = json.dumps(d,default = obj2json) print(s) # {"age": 22, "name": "lisixx"}
为每一个对象写一个转换方法是很麻烦的,可以将default定义为lambda obj:obj.__dict__。
loads():将一个json字符串转换成list或dict。如:
>>> import json >>> s = {'a':33,'name':'zhangsan'} >>> print(json.dumps(s)) {"name": "zhangsan", "a": 33} >>> js = json.dumps(s) >>> jo = json.loads(js) >>> print(type(jo)) <class 'dict'> >>> l = list() >>> l.append(s) >>> l.append(s) >>> print(json.dumps(l)) [{"name": "zhangsan", "a": 33}, {"name": "zhangsan", "a": 33}]
与dumps()类似,loads()中可以传入一个object_hook关键字,它对应一个函数,该函数的作用就是将一个json字符串转换成对应的obj。如:
import json class Demo(object): def __init__(self, age,name): self.age = age self.name = name s = '{"age": 22, "name": "lisx"}' o = json.loads(s,object_hook = lambda s:Demo(s['age'],s['name'])) print(type(o)) # <class '__main__.Demo'> print(o.name) # lisx print(o.age) # 22
dump():将obj转换成json字符串,并且写入到指定的文件中。
import json s = {'a':34,'name':'zhangsan'} l = list() l.append(s) l.append(s) f = open('./json.txt','w+') json.dump(l,f)
load():从指定的文件中读取json字符串,并转换成obj。如:
import json f = open('./json.txt','r+') # 与上面的dump使用的是同一个文件,且内容就是dump输出的内容 obj = json.load(f) print(type(obj)) # <type 'list'> print(obj)
相关文章推荐
- python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)
- 常用模块---sys-----logging-----json-------pickle
- python常用模块之json 和 pickle
- 常用模块(json/pickle/shelve/XML)
- Python--模块之sys模块、logging模块、序列化json模块、序列化pickle模块
- python 常用模块--logging,JSON/pickle,os
- Python基础(12)_python模块之sys模块、logging模块、序列化json模块、pickle模块、shelve模块
- day25 模块,sys, logging, json, pickle
- python常用模块-os,sys
- day6 模块time datetime random os sys json pikle
- Python sys模块的常用方法
- json & pickle 模块
- 序列化模块之 pickle 和 json
- python 之序列化(pickle模块和json模块)
- python序列化 pickle,json模块
- Python常用模块-SYS、OS、Time、hashlib
- Python中常用模块re,matplotlib,pandas,sys,mysql
- python struct、json、pickle模块
- python中模块sys与os的一些常用方法
- Python sys模块常用方法 (六)