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)