python常用模块用法_python常用模块(一)

#什么是模块呢?就是用一大坨代码来完成一个功能的代码集合,是不是简单易懂

#类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。

如:os 是系统相关的模块;file是文件操作相关的模块

模块分为三种:

自定义模块

内置标准模块(又称标准库)

开源模块

#既然别人可以写一个代码集合组成模块,我们自然也可以,这就是自定义模块

自定义模块 和开源模块的使用参考 http://www.cnblogs.com/wupeiqi/articles/4963027.html

1.json模块

用法:

1 importjson2 a ={3 '1':'a',4 '2':'b',5 '3':'c'

6 }7 with open("1.txt",'r+') as f:8 json.dump(a,f)9 print(json.load(f))10 >>>{'1': 'a', '2': 'b', '3': 'c'}11 f.write(json.dumps(a))12 print(json.loads(f.readline()))13 >>>{'1': 'a', '2': 'b', '3': 'c'}14

15 #dump:将数据通过特殊的形式转换为所有程序语言都认识的字符串

16 ,并放入文件,第一个参数是字典对象,第二个是文件对象17 #dumps:将数据通过特殊的形式转换为所有程序语言都认识的字符串

18 #loads:将json编码的字符串再转换为python的数据结构

19 #load:从数据文件中读取数据,并将json编码的字符串转换为python的数据结构

20

21 #说明:

22 json编码支持的基本类型有:None, bool, int, float, string, list, tuple, dict.23

24 对于字典,json会假设key是字符串(字典中的任何非字符串key都会在编码时转换为字符串),要符合JSON规范,应该只对python列表和字典进行编码。此外,在WEB应用中,把最顶层对象定义为字典是一种标准做法。25

26 json编码的格式几乎和python语法一致,略有不同的是:True会被映射为true,False会被映射为false,None会被映射为null,元组()会被映射为列表[],因为其他语言没有元组的概念,只有数组,也就是列表。27 a ={28 '1':True,29 '2':False,30 '3':None,31 '4':(1,2,3),32 5:'qwe'

33 }34 da =json.dumps(a)35 print(da)36 >>>{"1": true, "2": false, "3": null, "4": [1, 2, 3], "5": "qwe"}

View Code

2. pickle模块

用法:

1 importpickle2

3 defhello():4 for i in range(10):5 print('Hello',i)6 returnhello7 L ={8 'a':1,9 'b':2,10 'c':'Daniel'

11 }12 with open('pickle.txt','wb') as f:13 f.write(pickle.dumps(hello))14 with open('pickle.txt','wb') as f:15 f.write(pickle.dumps(L)) #pickle可以序列化python所有的数据类型,但仅允许在python中使用(等于是python独有语法),与json不同,不管能否反序列化,都可以序列化

16 #如果你重新开个程序

17 importpickle18 with open('pickle.txt','rb') as f:19 a =pickle.loads(f.read())20 print(a)21 #则会报错'AttributeError: Can't get attribute 'hello' on

22 #那如果调用‘L’则毫无问题,因为存的不是内存地址,而是数据

23 #所以说内存地址用完则释放,两个程序无法互相访问内存地址,数据可以直接反序列化

24

25 #当然pickle也有'load'、'dump'

26 L ={27 'a':1,28 'b':2,29 'c':'Daniel'

30 }31 with open('pickle.txt','wb') as f:32 pickle.dump(L,f)33 with open('pickle.txt','rb') as f:34 a =pickle.load(f)35 print(a)36 >>>{'a': 1, 'b': 2, 'c': 'Daniel'}

View Code

3.time & datetime模块

用法:

1 importtime2

3 print(time.clock()) #返回处理器时间,3.3开始已废弃 , 改成了time.process_time()测量处理器运算时间,不包括sleep时间,不稳定,mac上测不出来

4 print(time.altzone) #返回与utc时间的时间差,以秒计算\

5 print(time.asctime()) #返回时间格式"Mon Nov 6 17:21:39 2017"

6 print(time.localtime()) #返回本地时间 的struct time对象格式

7 print(time.gmtime(time.time()-800000)) #返回utc时间的struc时间对象格式

8 print(time.asctime(time.localtime())) #返回时间格式"Mon Nov 6 17:31:19 2017"

9 print(time.ctime()) 同上10

11 #日期字符串 转成 时间戳

12

13 string_struct = time.strptime('2017/11/13',"%Y/%m/%d") #将 日期字符串 转成 struct时间对象格式

14 print(string_struct)15 str_stamp = time.mktime(string_struct) #将struct时间对象转成时间戳

16 print(str_stamp)17

18 #时间戳转成日期字符串

19

20 print(time.gmtime(time.time()-86640))21 print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()))22

23 #时间加减

24

25 print(datetime.datetime.now())26 >>>2017-11-13 17:33:00.117320

27 print(datetime.date.fromtimestamp(time.time()))28 >>>2017-11-13 #时间戳直接转成日期字符串

29 print(datetime.datetime.now() + datetime.timedelta(3)) #加三天

30 >>>2017-11-16 17:33:00.117320

31 print(datetime.datetime.now() + datetime.timedelta(-3)) #减三天

32 >>>2017-11-10 17:33:00.117320

33 print(datetime.datetime.now() + datetime.timedelta(hours=1))34 >>>2017-11-13 18:33:00.117320 #加一小时

35 print(datetime.datetime.now() + datetime.timedelta(hours=-1))36 >>>2017-11-13 16:33:00.117320 #减一小时

37 print(datetime.datetime.now()+datetime.timedelta(minutes=10)) #加十分钟

38 >>>2017-11-13 17:43:00.117320

39 #so 那么就有秒----"second"不举例子了。=

40 print(now_time.replace(minute=0,hour=18,second=0,microsecond=0))41 >>>2017-11-13 18:00:00 #时间替换

View Code

4.random模块

用法:

1 importrandom2

3 #生成随机数

4 print(random.random())5 print(random.randint(1,10000)) #给随机数指定范围,最高为10000

6 print(random.randrange(1,10000000000)) #给随机数指定范围,最高9999999999

7

8 #生成随机验证码

9

10 importrandom11 ver_code = ''

12 for i in range(5):13 number = random.randrange(0,5)14 if number !=i:15 letter = chr(random.randrange(65,99))16 else:17 letter = random.randint(0,9)18 ver_code +=str(letter)19 print(ver_code)

View Code

5.os模块

提供对操作系统进行调用的接口

用法:

1 importos2

3 print(os.getcwd())4 >>>c:\test.py #查看当前路径(类似shell的pwd)

5 os.chdir('test')6 print(os.getcwd())7 >>>c:\test\test2 #改变当前路径(类似shell的cd)

8 os.curdir #返回当前目录 (类似shell的cd .)

9 os.pardir #返回父级目录(类似shell的 cd ..)

10 os.makedirs('P1/P2/P3') #创建多级目录

11 os.removedirs('A/B/C') #删除多级目录,比如(A/B/C) 如果C是空的则删除,不是则不删除,并返回错误,依次往上一级推

12 os.mkdir('test') #创建目录('mkdir')

13 os.rmdir('test') #删除目录,不为空则删除失败

14 os.listdir('test') #列出目录下的所有文件和所有目录

15 os.remove('test') #删除一个文件

16 os.rename('oldtest','newtest') #修改文件或目录名字

17 print(os.stat('oldtest') #获取文件或目录信息

18 print(os.sep ) #返回系统路径分隔符

19 print(os.linesep) #返回行的终止符

20 print(os.pathsep ) #返回分割文件路径的字符串

21 os.environ #获取系统环境变量

22 os.system("ping 1.1.1.1") #直接执行shell的命令

23 print(os.path.abspath('C:')) #返回规范化的绝对路径

24 print(os.path.split('c:/test'))25 >>>('c:', 'test') #将目录和文件以二元组的方式返回

26 print(os.path.dirname(path)) #返回父级目录,即'os.path.split'的第一个元素

27 print(os.path.basename('path')) #返回结束的文件名,即'os.path.split'的第二个元素

28 os.path.exists(path) #如果path存在,返回True;如果path不存在,返回False

29 os.path.isabs(path) #如果path是绝对路径,返回True

30 os.path.isfile(path) #如果path是一个存在的文件,返回True。否则返回False

31 os.path.isdir(path) #如果path是一个存在的目录,则返回True。否则返回False

32 os.path.join(path1[, path2[, ...]]) #将多个路径组合后返回,第一个绝对路径之前的参数将被忽略

33 os.path.getatime(path) #返回path所指向的文件或者目录的最后存取时间

34 os.path.getmtime(path) #返回path所指向的文件或者目录的最后修改时间

View Code

6.sys模块

用法:

1 sys.argv #配合脚本使用可以读取从外面传进来的参数

2 print(sys.version) #查看python版本

3 sys.exit() #退出程序

4 sys.path #返回模块搜索路径,还有python环境变量

5 #还有modules,stdin,stdout,大家自己去查吧

View Code

7.shutil模块

用法:

1 importshutil2

3 f1 = open('1.txt')4 f2 = open('2.txt','w',encoding='utf-8')5 shutil.copyfileobj(f1,f2) #复制文件

6 shutil.copyfile('1.txt','2.txt') #可直接复制

7 shutil.copytree('1','2') #复制目录,整个目录

8 shutil.rmtree('2') #删除目录

9 shutil.move(src,stc) #移动

10 shutil.make_archive('C:/1','zip','D:/test') #压缩,打包

11

12 #还有两种压缩方式:'Zipfile','Tarfile'

13

14 Zipfile:15 压缩:16 z = zipfile.ZipFile('test.zip','w') #一个一个选择压缩

17 z.write('test1.py')18 z.write('test2.py')19 z.close()20 解压:21 z = zipfile.ZipFile('test.zip','r')22 z.extractall()23 z.close()24

25 Tarfile:26 #跟上面差不多,举个例子

27 tar = tarfile.open('1.tar','w)

28 tar.add('test1.py')29 tar.close()30 #解压跟上面完全一样

31 tar.extractall()32 tar.close()

View Code

8.shelve模块

shelve是一个简单的的key,vlaue将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式

用法:

1 importshelve2

3 d = shelve.open('shelve_test') #打开一个文件

4

5 classTest(object):6 def __init__(self, n):7 self.n =n8

9 t = Test(123)10 t2 = Test(123334)11

12 name = ["alex", "rain", "test"]13 d["test"] = name #持久化列表

14 d["t1"] = t #持久化类

15 d["t2"] =t216

17 d.close()18 d = shelve.open('shelve_test') #读取

19 print(d.get('test'))20 >>>['alex', 'rain', 'test']

View Code

9.xml模块

xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统的接口还主要是xml。

xml的格式如下,就是通过<>节点来区别数据结构的:

1 <?xml version="1.0"?>

2

3

4 2

5 2008

6 141100

7

8

9

10

11 5

12 2011

13 59900

14

15

16

17 69

18 2011

19 13600

20

21

22

23

XML文件

1 importxml.etree.ElementTree as ET2 tree = ET.parse("XML")3 root =tree.getroot()4

5 #读取全部

6 print(root.tag)7 for child inroot:8 print(child.tag, child.attrib)9 for i inchild:10 print(i.tag,i.text)11

12 #只读取其中一项比如(year)

13 for node in root.iter('year'):14 print(node.tag,node.text)15

16

17 #修改xml文件的内容

18 for node in root.iter('year'):19 new_year = int(node.text) + 1

20 node.text =str(new_year)21 node.set("updated", "yes")22

23 tree.write("XML") #将year+1

24

25 #删除xml文件的内容

26 for country in root.findall('country'):27 rank = int(country.find('rank').text)28 if rank > 50:29 root.remove(country)30

31 tree.write('output.xml') #如果country下的rank大于50就删除country

32

33 #有删有改有查自然也有增

34 new_xml = ET.Element('company')35 post = ET.SubElement(new_xml,'post',attrib={"enrolled":"yes"})36 name = ET.SubElement(post,'name',attrib={"ehecked":"no"})37 age = ET.SubElement(name,'age')38 post.text = 'General manager'

39 name.text = 'Daniel'

40 age.text = '18'

41 et =ET.ElementTree(new_xml)42 et.write('XML',encoding='utf-8',xml_declaration=True)43 ET.dump(new_xml)

处理XML文件

10.PyYaml

Python也可以很容易的处理ymal文档格式,只不过需要安装一个模块,参考文档:http://pyyaml.org/wiki/PyYAMLDocumentation

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502562.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java jdbc init_Java 的JDBC 数据库连接池实现方法

虽然 J2EE 程序员一般都有现成的应用服务器所带的JDBC 数据库连接池&#xff0c;不过对于开发一般的 Java Application 、 Applet 或者 JSP、velocity 时&#xff0c;我们可用的JDBC 数据库连接池并不多&#xff0c;并且一般性能都不好。 Java 程序员都很羡慕 Windows ADO &…

python db文件_python中查看.db文件中表格的名字及表格中的字段操作

1.问题描述&#xff1a; 我桌面上有一个“账号密码.db”文件&#xff0c;我现在想知道里面有几张表格table、表格的名字、表头结构。2.使用SQL语句"""select name from sqlite_master where typetable order by name"""&#xff0c;查找表格的名…

django调用java_07.手把手教将深度学习利用Django将模型发布成服务供java调用

标题问题一.python发布成服务1.先建立一个深度学习模型并训练好2.建立一个预测方法去调用训练好的模型3.建立一个Django工程4.将python利用模型预测的代码放入Django项目中5.get请求加上参数6.github二.JAVA请求url&#xff0c;返回json数据问题python作为一个含科学计算与深度…

springboot转发http请求_网易后端实习生分享:Springboot异常和错误处理规范

由于错误在所难免&#xff0c;异常处理已经成为开发工作中不可或缺的部分。在web开发中&#xff0c;我们通常不希望用户看到一个写满StackTrace的错误页面&#xff1b;同时&#xff0c;我们希望出现错误或发生异常时&#xff0c;开发运维人员可以看到详细的错误信息&#xff0c…

java 偏向锁 怎么用_Java锁升级、偏向锁、轻量级锁

偏向锁当锁对象第一次被线程获取时&#xff0c;虚拟机会把对象头的锁状态标志设置为01(即偏向状态)&#xff0c;同时&#xff0c;使用CAS操作把获取到这个锁的线程的ID记录在对象头的mark word中。如果这个CAS操作成功&#xff0c;那么&#xff0c;以后持有这个偏向锁的线程在进…

springmvc 拦截器_Spring MVC拦截器学习

1 介绍Spring Web MVC是基于Servlet API构建的原始Web框架。2 拦截器2.1 定义springmvc框架的一种拦截机制2.2 使用2.2.1 两步走实现HandlerInterceptor接口注册&#xff08;xml或者注解 &#xff09;2.2.2 HandlerInterceptor接口实现HandlerInterceptor接口import org.spring…

python如何生成列表和元组数据_Python数据类型(列表和元组)

1.3 List(列表)列表由一系列按特定顺序排列的元素组成。在Python中&#xff0c;用方括号[ ]来表示列表&#xff0c;并用逗号来分隔其中的元素。1.3.1 访问列表元素在Python中&#xff0c;第一个列表元素的索引为0&#xff0c;而不是1。>>> bicycles [trek, cannondal…

mysql socket 与IP区别_MySQL本地用IP登陆而非socket

##想当然的指定hostname和端口。。。。失败[rootmysql01 ~]# /opt/mysql/bin/mysql -uroot -h localhost -P 3307 -pEnter password:ERROR 2002 (HY000): Cant connect to local MySQL server through socket /tmp/mysql.sock (2)##正确方法&#xff0c;指定通信协议 --protoco…

python画矩形函数drawrectangle_Python3 tkinter基础 Canvas create_rectangle 画矩形

Python : 3.7.0OS : Ubuntu 18.04.1 LTSIDE : PyCharm 2018.2.4Conda : 4.5.11typesetting : Markdowncode"""Author : 行初心Date : 18-9-30Blog : www.cnblogs.com/xingchuxinGitee : gitee.com/zhichengjiu"""from tkinter import *def main(…

java文件读入原理_描述一下JVM加载class文件的原理机制

1、JVM 简介JVM 是我们Javaer 的最基本功底了&#xff0c;刚开始学Java 的时候&#xff0c;一般都是从“Hello World ”开始的&#xff0c;然后会写个复杂点class &#xff0c;然后再找一些开源框架&#xff0c;比如Spring &#xff0c;Hibernate 等等&#xff0c;再然后就开发…

python为什么closed_为什么Python无法解析此JSON数据? [关闭] - Why can't Python parse this JSON data? [closed]...

问题&#xff1a;I have this JSON in a file: 我在文件中有此JSON&#xff1a;{"maps": [{"id": "blabla","iscategorical": "0"},{"id": "blabla","iscategorical": "0"}],"…

mysql 缓解竞争热点_MySQL优化之缓存优化

高兴的是有博友mark了我的文章。我知道mark之后&#xff0c;很少会再来继续关注的。但是从侧面说明了在博友点开博客的同时&#xff0c;他感觉这篇博客是有价值的&#xff0c;是能够弥补他的知识欠缺。一篇博客最重要的是对自己有用&#xff0c;如果再对别人有用&#xff0c;那…

python for循环1 到10_python for循环(1)

对于一个初学者来说for循环可能会击溃很多人&#xff0c;因为网上找的python的for循环没有详细的介绍for循环的条件以及for循环后面定义的东西是什么意思。首先我先举一个常用的例子。for i in range(1,10) :print i上面这两条代码是用来在屏幕上打印1到9的。这里就不对range这…

java maven junit_【JUnit】JUnit 与 maven 集成

环境JDK 11JUnit 4.13Spring Tool Suite 4.6.2Maven 3.6.3与 maven 集成因为已经是 maven 项目了&#xff0c;所以不再需要任何东西&#xff0c;默认就与 maven 集成了。不过由于 maven-surefire-plugin 自身的缺陷&#xff0c;导致测试时&#xff0c;如果有中文&#xff0c;则…

最长不重复子串python_python经典算法题:无重复字符的最长子串

题目&#xff1a;无重复字符的最长子串。给定一个字符串&#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字…

python构造referer_Python爬虫小偏方:修改referer绕开登录和访问频率限制

看官们在写爬虫程序时应该都会遇到如下问题&#xff1a;你的爬虫程序开发时能正常抓取网页&#xff0c;但是正式大量抓取时&#xff0c;抓取的网站总是返回403或者500等&#xff1b;你抓取的网站需要登录&#xff0c;要花大量时间去研究网站登录流程。遇到问题1&#xff0c;我们…

微信流媒体直播java_微信小程序直播带货教程

微信小程序直播带货教程微信小程序正式推出直播带货组件&#xff0c;很多正在使用 “api工厂” 的用户&#xff0c;这几天一直在问&#xff0c;现有小程序如何使用直播带货的功能&#xff0c;需要不需要做很复杂的改动&#xff1f;是否需要重新开发小程序&#xff1f;使用门槛高…

铺砖问题JAVA_java彩色瓷砖编程题分析

牛牛喜欢彩色的东西,尤其是彩色的瓷砖。牛牛的房间内铺有L块正方形瓷砖。每块砖的颜色有四种可能:红、绿、蓝、黄。给定一个字符串S, 如果S的第i个字符是R, ‘G, ‘B或Y,那么第i块瓷砖的颜色就分别是红、绿、蓝或者黄。牛牛决定换掉一些瓷砖的颜色,使得相邻两块瓷砖的颜色均不相…

python灰度图像为什么显示成彩色的_python opencv image 怎么变成伪彩色

匿名用户1级2017-05-16 回答OpenCV 生成 伪彩色图像opencv中没有易用的伪彩色图像生成函数&#xff0c;这里提供一个改造过的函数&#xff0c;利用自定义colorbar 将灰度图像转换成为伪彩色图像&#xff0c;优点在于提供了对于颜色的直观可操控性&#xff0c;转换方便。函数代码…

vue和java实现页面增删改_SpringBoot-Vue实现增删改查及分页小DEMO

前言主要通过后端 Spring Boot 技术和前端 Vue 技术来简单开发一个demo&#xff0c;实现增删改查、分页功能以及了解Springboot搭配vue完成前后端分离项目的开发流程。开发栈前端开发工具&#xff1a;WebStorm开发框架&#xff1a;vue axios包管理工具: npm打包工具&#xff1…