常用模块——sys,pickle,json

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)



        





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值