Python之第二十六天的努力--sys、json模块
01 sys模块
-
sys.argv[] :
# 获取命令行方式运行的脚本后面的参数 print("脚本名:",sys.argv[0]) # 脚本名 print("第一个参数:",sys.argv[1]) # 第一个参数 print("第二个参数:",sys.argv[2]) # 第二个参数arg1 = int(sys.argv[1]) arg2 = int(sys.argv[2]) print(arg1 + arg2) -
sys.path :
# 解释器寻找模块的路径 # sys.path -
sys.modules :
# 已经加装的模块 print(sys.modules)
02 json模块
JavaScript Object Notation:java脚本兑现标记语言。
已经成为一种简单的数据交换格式。
-
序列化:将内存中的数据,转换成字节串、保存在文件或通过网络传输,称为序列化过程。
-
反序列化:从文件中、网络中获取的数据,转换成内存中原来的数据类型,称为反序列化过程。
-
把指定的对象转换成json格式的字符串: json.dumps()
# 把指定的对象转换成json格式的字符串 s1 = json.dumps([1,2,3]) # print(type(s1)) print(s1) # '[1,2,3]' # 元祖序列换后变成列表 s2 = json.dumps((1,2,3)) print(s2) # [1, 2, 3] # res = json.dumps({'name':'zs','age':18}) print(res) # '{"name": "zs", "age": 18}' # set不可以序列化 res2 = json.dumps(set('abc')) print(res2) # 报错 -
将json结果写到文件中: json.dump()
# 将json结果写到文件中 with open('a.txt',encoding='utf-8',mode='at') as f: json.dump([1,2,3],f) -
反序列化过程: json.loads()
# 反序列化 res = json.dumps([1,2,3]) lst = json.loads(res) print(type(lst)) # <class 'list'> print(lst) # [1, 2, 3] # 元组反序列化,会变成列表 res = json.dumps((1,2,3)) lst = json.loads(res) print(type(lst)) # <class 'list'> print(lst) # [1, 2, 3] -
从文件中反序列化: json.load()
# 从文件中反序列化 with open('a.txt',encoding='utf-8') as f: res = json.load(f) print(type(res)) # <class 'list'> print(res) # [1, 2, 3] -
实现多次写
# 把需要序列化的对象,通过多次序列化的方式,用文件的write方法,把多次序列化后的json字符串 # 写入到文件中 with open('json.txt',encoding='utf-8',mode='at') as f1: f1.write(json.dumps([1,2,3]) + '\n') f1.write(json.dumps([4,5,6]) + '\n') -
多次反序列化
# 把分次序列化的json字符串,反序列化回来 with open('json.txt',encoding='utf-8',mode='rt') as f2: # res1 = json.loads(f2.readline().strip()) # res2 = json.loads(f2.readline().strip()) # print(res1) # print(res2) for line in f2: print(json.loads(line.strip()))

浙公网安备 33010602011771号