常用模块之 os,json,shelve,xml模块
- os 即操作系统
在 os 中提供了很多关于文件,文件夹,路径处理的函数
这是我们学习的重点- os.path 是os模块下专门用于处理路径相关的
- python是一门跨平台语言,由于每个平台路径规则不同
需要一个模块来使得路径可以自动根据平台进行变化- path模块仅仅是对路径(字符串)进行操作 不会直接操作文件
os.path.abspath #返回一个绝对路径- 把路径和最后的文件名/文件夹名单独切出来
os.path.split- os.path.exists #判断路径是否存在
- isabs#是否是绝对路径 原理是看第一个是不是路径分隔符
- os.path.join #当前操作系统的分隔符来拼接
- # import os
- # print(os.getcwd())
- #修改当前全部工作目录
- # os.chdir('test')
- # print(os.getcwd())
- #.代表当前
- # print(os.curdir)
- #..代表上一级
- # print(os.pardir)
- #创建多级目录 不同平台 路径分隔符不同
- # os.makedirs('a\\b\\c\\')
- #获取当前平台的路径分隔符
- # print(os.sep)
- #使用join拼接路径
- # os.makedirs(os.sep.join(['a','b','c']))
- #会先尝试查找a\b 这个路径 找到以后在里面创建c
- # os.mkdir('a/b/c')
- #目录部位空时 无法删除 需要递归删除
- # os.removedirs('a/b/c')
- #获取目录下的所有文件包括文件夹
- # os.listdir(r'.....')
- # dir=r'......'
- # # li= os.listdir(dir)
- # def show_file(path):
- # li = os.listdir(path)
- # for i in li:
- # print(path+'\\'+i)
- # #拼接完成路径
- # # os.path.isfile(dir+'\\'+i) #判断是否是文件
- # # os.path.isdir(dir+'\\'+i)#判断是否是路径
- # #如果是文件夹就继续递归
- # if os.path.isdir(path+'\\'+i)
- # show_file(path+'\\'+i)
- # show_file(dir)
- # os.rmdir 删除单级空目录
- # os.path.getsize #获取文件大小
- #直接把执行结果控制到控制台
- # os.system('tasklist')
- #查找文件*****
- # BASE_PATH=os.path.dirname(os.path.dirname(__file__))
- # LOG_PATH=os.path.join(BASE_PATH)
- # print(LOG_PATH)
- # os.path.gettime 查找文件最后修改时间
- 在python中json是一个模块
- JSON :JavaScript Object Nation js 对象表示法
当年的HTML独领风骚
上网大多数情况下指的是打开网页
浏览器中运行的js语言
做后台服务器 必须保证你的数据是浏览器(JS)能够看懂的
js能看懂什么?就是json
json数据类型与python数据类型的对应关系
python中的格式 json格式
字符 字符 必须是双引号
数字 数字
字典 字典
列表 数组
元组 没有
集合 没有- 使用jsom格式时要注意,最外层只能是一个数据 类型不限
如果你要一次性存储多个数据,需要使用容器 字典或数组- 序列化
服务器端 需要根据前段的请求 从数据库获取数据 组织成前台可以识别的格式发给前台
反序列化
客户端 接受服务器返回的数据 并显示在屏幕上- 主要函数:
序列化
dump
dumps
反序列化
load
loads- json数据本质就是字符串
json 最大的优势在于 其实跨平台的数据交换格式,并且非常的轻量级
并且对比xml 非常轻量级
- # import json
- # li=['a','b','c']
- # with open('DB.json','wt',encoding='utf-8')as f:
- # json.dump(li,f)
- # li=[{'name':'wdj','sex':'male'},{'name':'lx','sex':'male'}]
- # with open('DB.json', 'wt', encoding='utf-8')as f:
- # json.dump(li, f)
- # with open('DB.json', 'rt', encoding='utf-8')as f:
- # res=json.load(f)
- # print(res)
- shelve模块
也是一个序列化模块
可以把它看做是一个自带序列化的字典
- # import shelve
- # s= shelve.open('new.sve')
- # print(s)
- # # 存入数据
- # s["name"] = "常委"
- # s["age"] = 20
- #
- # print(s)
- # 取出数据
- # s = shelve.open("new.sve")
- # print(s["name"],s["age"],s["sex"])
- xml模块
是什么?
可扩展标记语言
xml也是一种文档结构 也是一种序列化方式
与json不同的地方在于 xml可以定义文档的结构 例如在页面中 有页头页尾等..
语法格式:
使用标签来描述数据
<tag></tag>
通常由一堆标签组成 开始标签和结束标签
<tag/> 单标签 直接再名字后面加上斜杠结束- 一个标签由三个部分组成
1.标签名
2.属性
<tag name='刘xx' age='20'></tag>
属性名称为name 值为刘xx 注意值必须放在双引号中
3.文本内容
<tag>这是文本内容</tag>- 标签可以嵌套
<persons>
<p name='a'></p>
<p name='a'></p>
</persons>
标签嵌套时 关闭的顺序与打开的顺序 相反
注意:最外层必须只有一个跟标签
<info name="self" age="18" sex="woman"/>- xml模块的使用
xml模块的主要功能是 解析xml 即序列化和反序列化
对于xml格式的数据 一般不会使用代码来生成 更多的是读取xml的文件内容
- 主要函数:
iter
find
findall
- import xml.etree.ElementTree as ET
- # ElementTree 文档树 用于读写文件
- # Element 一个标签
- # 解析某个文件
- # tree = ET.parse("test.xml")
- # 获取根标签
- # root = tree.getroot()
- # name为新加坡的country改成shanghai
- # res = root.iter("country")
- # for i in res:
- # if i.attrib.get("name") == "Singapore":
- # i.set("name","shanghai")
- # 创建一个新标签
- # new_tag = ET.Element("我是新标签",attrib={"name":"abc"})
- # new_tag.text = "这是文本内容"
- # 将新标签添加到根标签中
- # root.append(new_tag)
- # 写入文件
- # tree.write("test2.xml",encoding="utf-8")
- # print(root)
- # # tag 获取标签名字
- # print(root.tag)
- # 获取文本
- # print(root.text)
- # 获取属性 返回一个字典
- # print(root.attrib)
- # 获取子标签(元素,节点)
- # iter 在全文范围查找所有名字匹配的
- # res = root.iter("country")
- #
- # print(list(res))
- # res = root.iter("year")
- # for i in res:
- # print(i.text)
- # find 当前标签的子标签 并且只返回第一个
- # res = root.find("country")
- # print(res)
- #
- # # 可以一级一级往里找
- # res = root.find("country").find("year")
- # print(res)
- # # print(res.attrib["name"])
- # findall 当前标签的子标签 并且只返回所有匹配的
- # res = root.findall("country")
- # print(res[1].tag)
- <?xml version="1.0"?>
- <data>
- <country name="Liechtenstein">
- <rank updated="yes">2</rank>
- <year>2008</year>
- <gdppc>141100</gdppc>
- <neighbor name="Austria" direction="E"/>
- <neighbor name="Switzerland" direction="W"/>
- </country>
- <country name="Singapore">
- <rank updated="yes">5</rank>
- <year>2011</year>
- <gdppc>59900</gdppc>
- </country>
- </data>
test.xml
常用模块之 os,json,shelve,xml模块的更多相关文章
- 常用模块(random,os,json,pickle,shelve)
常用模块(random,os,json,pickle,shelve) random import random print(random.random()) # 0-1之间的小数 print(rand ...
- configparser模块,subprocess 模块,xlrd,xlwt ,xml 模块,面向对象
1. configparser模块 2.subprocess 模块 3.xlrd,xlwt 4.xml 模块 5.面向对象 面向对象是什么? 是一种编程思想,指导你如何更好的编写代码 关注点在对象 具 ...
- python模块--json \ pickle \ shelve \ XML模块
一.json模块 之前学习过的eval内置方法可以将一个字符串转成一个python对象,不过eval方法时有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,e ...
- day16 常用模块 sys os json pickle
知识点 os:和操作系统相关sys:和解释器相关 json:和操作JSON(一种数据交换格式)相关pickle:序列化 hashlib:加密算法Collections:集合类型 ...
- Py-时间,随机,os,sys,jsonpickle序列化,shelve,xml模块
内置模块 1.时间模块 第一:time.time()是时间戳 时间戳默认是 从1970年到现在过的秒数,是一个很长的数值它可以做时间的计算以及显示 第二:localtime() 获取当前的时间,按元组 ...
- Python学习第十二课——json&pickle&XML模块&OS模块
json模块 import json dic={'name':'hanhan'} i=8 s='hello' l=[11,22] data=json.dumps(dic) #json.dumps() ...
- python 模块二(os,json,pickle)
#################################总结##################### os常用 os.makedirs('baby/安哥拉/特斯拉/黄晓明') os.mkd ...
- day21 pickle json shelve configpaser 模块
1. 序列化:我们在网络传输的时候,需要我们对对象进行处理,把对象处理成方便存储和传输的格式,这个过程就叫序列化 序列化的方法不一定一样,三十目的都是为了方便储存和传输. 在python中有三种序列化 ...
- 函数和常用模块【day06】:xml模块(六)
本节内容 1.简述 2.xml格式 3.xml节点操作 4.创建新的xml文件 一.简述 xml是实现不同语言或者程序之间进行数据交换的协议,跟json差不多,但是json使用起来更简单,不过,古时候 ...
随机推荐
- Java匹马行天下之JavaWeb核心技术——JSP
JSP动态网页技术 一.JavaWeb简介 一.什么是JavaWeb? JavaWeb是用Java技术来解决相关web互联网领域的技术总称. 需要在特定的web服务器上运行,分为web服务器和web客 ...
- Oracle11G的用户解锁、卸载以及基础操作
Oracle用户解锁 [以下操作,必须以超级管理员身份登录,才能修改]oracle安装后,会默认生成很多个用户 以超级管理员身份登录,请注意,其中的空格符:[ sys是一个超级管理员,有最大的权限,d ...
- jquery调用asp.net 页面后台的实现代码
先创建一个aspx页面编写一个客户端控件<input type="button" id="AjaxDemo" value="AjaxDemo&q ...
- android下的异步任务
异步任务一般用在加载一些网络资源的时候用,主要的实现方法是新建一个类来继承AsyncTask这个父类,然后复写该类下面的一些方法,其中doInBackground方法是必须要的,下面看代码 packa ...
- Linux下安装maven和nexus
Linux下安装maven1.首先到Maven官网下载安装文件,目前最新版本为3.0.3,下载文件为apache-maven-3.0.3-bin.tar.gz,下载可以使用wget命令: 2.进入下载 ...
- LeetCode Move Zeroes (简单题)
题意: 给定一个整型数组nums,要求将其中所有的0移动到末尾,并维护所有非0整数的相对位置不变. 思路: 扫一遍,两个指针维护0与非0的交界,将非0的数向前赋值就行了. C++ class Solu ...
- c++ STL list容器成员函数
list是一个双链表. 函数 描述 void l.assign (int n, const val) void l.assign (it first, it last) 将链表l初始化为n个相同的va ...
- linux 命令——42 kill (转)
Linux 中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令.通常,终止一个前台进程可以 使用Ctrl+C键,但是,对于一个后台进程 ...
- 知乎日报客户端应用ios源码
swift开发的知乎日报客户端详细源码,里面分UI和网络两个模块. 1.涉及到了大部分的UI控件的使用(甚至包括UIRefreshView,UITableConrol等等)2.Connection完成 ...
- Android(java)学习笔记90:TextView 添加超链接(两种实现方式)
1. TextView添加超链接: TextView添加超链接有两种方式,它们有区别于WebView: (1)方式1: LinearLayout layout = new LinearLayout(t ...