码迷,mamicode.com
首页 > 编程语言 > 详细

Python 小栈_13:Python os、sys、xml、json、pickle模块

时间:2020-03-17 21:10:39      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:pre   env   text   自带   网络传输   encoding   函数名   pat   tree   

今日所学:

 

一、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下为"\t\n",Linux下为"\n" 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.3\python_s1" b="\venv\模块与包" print(os.path.join(a,b)) >>> D:\PyCharm 2019.3.3\python_s1\venv\模块与包

 

二、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 os、sys、xml、json、pickle模块

标签:pre   env   text   自带   网络传输   encoding   函数名   pat   tree   

原文地址:https://www.cnblogs.com/211293dlam/p/12513300.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!