Python 小栈_13:Python ossysxmljsonpickle模块
Posted 211293dlam
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 小栈_13:Python ossysxmljsonpickle模块相关的知识,希望对你有一定的参考价值。
今日所学:
一、os 模块
1、文件目录的修改与调用
import sys sys.path.append() --->只能临时修改路径 要永久修改则要改系统的路径 import os,sys print(__file__) #仅拿到当前的py文件名,前面的路径是pycharm自己做了拼接 print(os.path.dirname(__file__)) #dirname是拿到该文件的上一级目录 print(os.path.dirname(os.path.dirname(__file__))) #执行两次dirname则是拿到更上一级的目录 若两个文件的上一级目录不是同一个,则在调用时,要么输入调用文件的绝对路径,要么是利用os.path.dirname找到相对应的上级目录即可 第一种: import sys sys.path.append("r"C:调用文件的绝对路径) 第二种 base_oir=os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 注意:print(__file__)只是找到Py文件名,前面的路径是解释器自带的,所以在重新找路径时,要用os.path.abspath()加上绝对路径
2、os模块内置函数
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd os.curdir 返回当前目录: (‘.‘) os.pardir 获取当前目录的父目录字符串名:(‘..‘) os.makedirs(‘dirname1/dirname2‘) 可生成多层递归目录 os.removedirs(‘dirname1‘) 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 os.mkdir(‘dirname‘) 生成单级目录;相当于shell中mkdir dirname os.rmdir(‘dirname‘) 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname os.listdir(‘dirname‘) 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印 os.remove() 删除一个文件 os.rename("oldname","newname") 重命名文件/目录 os.stat(‘path/filename‘) 获取文件/目录信息 os.sep 输出操作系统特定的路径分隔符,win下为"\",Linux下为"/" os.linesep 输出当前平台使用的行终止符,win下为" ",Linux下为" " os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为: os.name 输出字符串指示当前使用平台。win->‘nt‘; Linux->‘posix‘ os.system("bash command") 运行shell命令,直接显示 os.environ 获取系统环境变量 os.path.abspath(path) 返回path规范化的绝对路径 os.path.split(path) 将path分割成目录和文件名二元组返回 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 os.path.basename(path) 返回path最后的文件名。如何path以/或结尾,那么就会返回空值。即os.path.split(path)的第二个元素 os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False os.path.isabs(path) 如果path是绝对路径,返回True os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间 os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
注意:join函数最重要,可把多个路径拼接在一起
a="D:PyCharm 2019.3.3python_s1" b="venv模块与包" print(os.path.join(a,b)) >>> D:PyCharm 2019.3.3python_s1venv模块与包
二、sys模块
1、sys内置函数
sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys.maxint 最大的Int值 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform 返回操作系统平台名称
2、进度条
import time,sys for i in range(10): sys.stdout.write("#") #sys.stdout.write=print time.sleep(1) sys.stdout.flush() >>>##########
三、json模块(可以进行任意语言之间的数据切换)
1、序列化和反序列化
序列化:将对象(变量)从内存中变为可存储/传输的过程,在python中叫做pickling。
序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。
反序列化:把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。
2、json模块用法
import json dic={"name":"happy"} data=json.dumps(dic) #dumps的作用是把先数据类型中的单引号都变为双引号,再在外面加上一层引号,使之变成json字符串 f=open("hello","w") f.write(data) f.close() f_read=open("hello","r") data=json.loads(f_read.read()) print(data) >>> {‘name‘: ‘happy‘}
3、json四种函数
json.dumps() json.loads() json.dump() json.load() #用法类似,只是dump和load只能用于文件处理中
四、pickle模块
pickle模块与json 模块相类似,只是在写入和读取时以字节的形式,因此文件只能采用b模式。
import pickle dic={"name":"happy"} data=pickle.dumps(dic) #dumps的作用是把先数据类型中的单引号都变为双引号,再在外面加上一层引号,使之变成json字符串 f=open("hello","wb") f.write(data) f.close() f_read=open("hello","rb") data=pickle.loads(f_read.read()) print(data) f.close() >>> {‘name‘: ‘happy‘}
五、shelve模块(只有一个open函数)
import shelve
f = shelve.open(r‘shelve.txt‘) f[‘stu1_info‘]={‘name‘:‘alex‘,‘age‘:‘18‘} f[‘stu2_info‘]={‘name‘:‘alvin‘,‘age‘:‘20‘} f[‘school_info‘]={‘website‘:‘oldboyedu.com‘,‘city‘:‘beijing‘} #f.close() print(f.get("stu1_info")[age]) >>> 18
六、xml模块
1、xml的格式如下,就是通过<>节点来区别数据结构的:
<?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> <neighbor name="Malaysia" direction="N"/> </country> <country name="Panama"> <rank updated="yes">69</rank> <year>2011</year> <gdppc>13600</gdppc> <neighbor name="Costa Rica" direction="W"/> <neighbor name="Colombia" direction="E"/> </country> </data>
2、xml协议在各个语言里的都 是支持的,在python中可以用以下模块操作xml:
import xml.etree.ElementTree as ET #可以自定义用什么来代替函数名,较方便 tree = ET.parse("xmltest.xml") #tree是根节点 root = tree.getroot() print(root.tag) #打印标签名 #遍历xml文档 for child in root: print(child.tag, child.attrib) #tag是标签名。attrib是属性(属性以键值对的方式输出。) for i in child: print(i.tag,i.text) #打印标签中的文本内容 #只遍历year 节点 for node in root.iter(‘year‘): print(node.tag,node.text) #--------------------------------------- import xml.etree.ElementTree as ET tree = ET.parse("xmltest.xml") root = tree.getroot() #修改 for node in root.iter(‘year‘): new_year = int(node.text) + 1 node.text = str(new_year) node.set("updated","yes") #set用来添加一个属性 tree.write("xmltest.xml") #删除node for country in root.findall(‘country‘): rank = int(country.find(‘rank‘).text) if rank > 50: root.remove(country) tree.write(‘output.xml‘)
3、自己创建一个xml文档
import xml.etree.ElementTree as ET new_xml = ET.Element("namelist") name = ET.SubElement(new_xml,"name",attrib={"enrolled":"yes"}) age = ET.SubElement(name,"age",attrib={"checked":"no"}) sex = ET.SubElement(name,"sex") sex.text = ‘33‘ name2 = ET.SubElement(new_xml,"name",attrib={"enrolled":"no"}) age = ET.SubElement(name2,"age") age.text = ‘19‘ et = ET.ElementTree(new_xml) #生成文档对象 et.write("test.xml", encoding="utf-8",xml_declaration=True) ET.dump(new_xml) #打印生成的格式
以上。
以上是关于Python 小栈_13:Python ossysxmljsonpickle模块的主要内容,如果未能解决你的问题,请参考以下文章