python不同模块间传递数据_Python模块-数据传送模块

本文介绍了Python中用于不同模块间数据传递的几种方法,包括json、pickle、shelve模块的使用,以及XML模块ElementTree的解析。详细讲解了它们的转换操作、数据类型支持及应用场景,帮助理解各种数据交换方式的特点。
摘要由CSDN通过智能技术生成

json

数据交换,可以跨语言交换,比如php、java等,默认使用规范为双引号。

json类型

Python类型

{}

dict

[]

list

"str"

str

123.45

int或float

true/flase

True/Flase

null

None

json.dumps()

序列号操作,转换为json格式字符串

普通字典转换为字符串做法

# -*- coding: -*-

dic = {'a':"1"}

a = str(dic) #数据转换

print("原来数据类型:",type(dic))

print("转换后数据类型:",type(a))

原来数据类型:

转换后数据类型:

普通字典样式的字符串转字典示例做法

# -*- coding: -*-

A = "{'a':1}"

B = eval(A) #数据转换

print("原来数据类型:",type(A))

print("转换后数据类型:",type(B))

json 字典转换字符串

字符串单引号变双引号,双引号字符串保持不变

import json

dic = {'name':1}

print("转换结果:",json.dumps(dic))

print("转换结果类型:",type(json.dumps(dic)))

转换结果: {"name": 1}

转换结果类型:

json.loads()

反序列化操作,将json格式字符串转换为原来的类型

import json

dic = {'name':1}

a = json.dumps(dic)

#以上为字典转换为json格式的字符串

print("转换结果:",json.loads(a))

print("转换结果类型:",type(json.loads(a)))

转换结果: {'name': 1}

转换结果类型:

Pickle模块

json对比区别

pickle写入内容不可读,pickle支持的数据类型更多

引用

import pickle

方法

转换为字符串类型

pickle.dump

pickle.dumps

转换为原来类型

pickle.load

pickle.loads

shelve模块

shelves写入内容不可读

序列化操作存储

import shelve

a = shelve.open("test")

a["name"] = {"xiaowang"}

自动生成的三个文件

test.bak

test.dat

test.dir

反序列化操作读取

import shelve

a = shelve.open("test")

a["name"] = {"xiaowang"}

print(a.get("name"))

{'xiaowang'}

xml模块,ElementTree解析

测试文件

1

2

3

4

5

标签名称

文档树的根节点标签名称

import xml.etree.ElementTree as ET

tree = ET.parse("XMLConfig.xml") #文档树内存地址

tree_root = tree.getroot() #文档树根的内存地址

print(tree_root.tag) #文档树根的标签

root

标签属性

文档树中各个属性以字典键值对形式输出

# -*- coding: utf8 -*-

import xml.etree.ElementTree as ET

tree = ET.parse("XMLConfig.xml") #文档树内存地址

tree_root = tree.getroot() #文档树根的内存地址

for i in tree_root:

print(i.attrib) #文档树中的分类列表

{'dec': 'list_1'}

{'dec': 'list_2'}

{'dec': 'list_3'}

{'dec': 'list_4'}

{'dec': 'list_5'}

标签内容

# -*- coding: utf8 -*-

import xml.etree.ElementTree as ET

tree = ET.parse("XMLConfig.xml") #文档树内存地址

tree_root = tree.getroot() #文档树根的内存地址

for i in tree_root: #遍历文档树

for j in i: #遍历文档树列表

print(j.text) #文档树遍历文档列表中标签内容

1

None

None

2

None

None

3

4

None

5

None

None

修改内容

# -*- coding: utf8 -*-

import xml.etree.ElementTree as ET

tree = ET.parse("XMLConfig.xml") #文档树内存地址

tree_root = tree.getroot() #文档树根的内存地址

for i in tree_root.iter("test"): #遍历文档树

i.set("test", "new_txt") #文档树遍历文档列表中标签内容 修改

tree.write("XMLConfig2.xml") #保存修改后的文件

修改后

1

2

3

4

5

删除内容

import xml.etree.ElementTree as ET

tree = ET.parse("XMLConfig.xml") #文档树内存地址

tree_root = tree.getroot() #文档树根的内存地址

for i in tree_root.findall("GV"): #遍历文档树第一层

rank = int(i.find("test").text) #第二层查找标签并赋值

if rank > 4: #第二层条件判断

tree_root.remove(i) #不符合条件删除操作

tree.write("XMLConfig2.xml") #保存修改后的文件

删除后

1

2

3

4

生成xml文件

# -*- coding: utf8 -*-

import xml.etree.ElementTree as ET

new_xml = ET.Element("xml_list") #创建文档树根节点

name = ET.SubElement(new_xml,"name",attrib={"test1":"1"}) #在根节点中插入子元素

name = ET.SubElement(new_xml,"name",attrib={"test2":"2"}) #在根节点中插入子元素

et = ET.ElementTree(new_xml) #生成文档对象

ET.dump(new_xml) #打印生成的格式

et.write("test.xml",encoding="utf8",xml_declaration=True) #生成文件

打印出的内容

生成的文件内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值