Python常用标准库(一)
知识点介绍
Python拥有一个强大的标准库。Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外的功能。
Python标准库的主要功能有:
- 文本处理,包含文本格式化、正则表达式匹配、文本差异计算与合并、Unicode支持,二进制数据处理等功能
- 文件处理,包含文件操作、创建临时文件、文件压缩与归档、操作配置文件等功能
- 操作系统功能,包含线程与进程支持、IO复用、日期与时间处理、调用系统函数、日志(logging)等功能
- 网络通信,包含网络套接字,SSL加密通信、异步网络通信等功能
- 网络协议,支持HTTP,FTP,SMTP,POP,IMAP,NNTP,XMLRPC等多种网络协议,并提供了编写网络服务器的框架
- W3C格式支持,包含HTML,SGML,XML的处理。
- 其它功能,包括国际化支持、数学运算、HASH、Tkinter等
系统环境
- Linux Ubuntu 14.04
- Python 3.6
- Ipython
- PyCharm
本实验共包含sys、os、glob、math、random、platform、pikle与cPikle、subprocess等8个标准库
实验步骤
1.sys模块:
sys模块包括了一组非常实用的服务,内含很多函数方法和变量,用来处理Python运行时的配置以及资源,从而可以与前当程序之外的系统环境交互,如:Python解释器。
sys模块的常见函数列表:
(1) sys.argv 实现从程序外部向程序内部传递参数
sys.argv 变量是一个包含了命令行参数的字符串列表,利用命令行向程序传递参数.。其中,脚本的名称总是 sys.argv 列表的第一个参数。
argv[0] #代表本身名字
argv[1] #第一个参数
argv[2] #第二个参数
argv[3] #第三个参数
argv[N] #第N个参数
1.使用vim编辑一个test.py文件,内容如下:
#!/usr/bin/env python
import sys
print (sys.argv[0])
print (sys.argv[1])
print (sys.argv)
2.传递一个参数argvtest,运行test.py文件
python test.py argvtest
结果为:
test.py
argvtest
['test.py','argvtest']
值得注意的是,argv既然是一个列表,那么可以通过len()函数获取这个列表的长度从而知道输入的参数数量。可以看到列表把自身文件名也写了进去,所以当我们统计的使用应该-1才是实际的参数数量,因此可以使用len(sys.argv[1:])获取参数长度。
(2)sys.exit(n)
sys.exit(n) 退出程序引发SystemExit异常,可以捕获异常并执行些清理工作。n默认值为0,表示正常退出。其他都是非正常退出,还可以sys.exit("sorry, goodbye!");一般主程序中使用此方式退出。
1.使用vim编辑一个exit.py文件,内容如下:
#!/usr/bin/python
import sys print("hello world1")
sys.exit(0) print("hello world2")
2.运行exit.py文件
python exit.py
结果为:
hello world1
(3)sys.path
模块搜索路径,可以将写好的模块放在该路径下,就可以在程序中import时正确找到
示例:
import sys sys.path
输出的是一个列表,里面包含了当前Python解释器所能找到的模块目录。
(4)sys.modules
sys.modules是一个全局字典,该字典是python启动后就加载在内存中。每当程序员导入新的模块,sys.modules将自动记录该模块。当第二次再导入该模块时,python会直接到字典中查找,从而加快了程序运行的速度。它拥有字典所拥有的一切方法。
1.使用vim编辑一个modules.py文件,内容如下:
#!/usr/bin/python
import sys print(sys.modules.keys())
print("**************************************************************************")
print(sys.modules.values())
print("**************************************************************************")
print(sys.modules["os"])
2.运行modules.py文件
python modules.py
(5)sys.stdin/sys.stdout/sys.stderr
stdin,stdout,stderr包含与标准I/O流对应的流对象,如果需要更好地控制输出,而print不能满足我们的要求,它们就是我们所需要的。也可以替换它们,这时候我们可以重定向输出和输入到其它设备( device ),或者以非标准的方式处理它们。
1.测试一下标准输入:
import sys
print('Hi, %s!' %input('Please enter your name: '))
2.测试一下标准输出:
print('Hello World!\n')
这就是从 标准输入:键盘 获取信息,再输出到 标准输出: 屏幕;
那么上面的例子中input和print是如何与标准输入/输出流 建立关系的呢?
其实Python程序的标准输入/输出/出错流定义在sys模块中,分别为: sys.stdin,sys.stdout,sys.stderr
上面的测试标准输入、输出程序与下列的程序是一样的:
3.使用vim编辑一个stdin.py文件,内容如下:
#!/usr/bin/python
import sys
print('Please enter your name:')
name=sys.stdin.readline()[:-1]
print('Hi, %s!' %name)
4.运行stdin.py文件
python stdin.py
结果为:
Please enter your name:
python
Hi,python!
5.使用vim编辑一个stdout.py文件,内容如下:
#!/usr/bin/python
import sys
sys.stdout.write('Hello World!\n')
6.运行stdout.py文件
python stdout.py
结果为:
Hello World!
7.sys.stderr一般是错误信息。stderr对象接收出错信息。
2.os模块:
在自动化测试中,经常需要查找操作文件,比如说查找配置文件(从而读取配置文件的信息),查找测试报告(从而发送测试报告邮件),经常要对大量文件和大量路径进行操作,这就依赖于os模块
在Python界面可以通过help()命令查看os模块的详细介绍,按q退出help()
import os help(os)
os以及其子模块包含的功能很多,这里我们介绍常用子模块
(1)关于path子模块:
(2)关于文件/目录/属性
(3)关于环境变量
(4)关于进程
3.glob模块:
文件查找,支持通配符(*、?、[])
1.创建a.sh、b.sh、c.sh、ab.sh
touch a.sh b.sh c.sh ab.sh
2.查找目录中所有以.sh为后缀的文件
import glob glob.glob('/data/*.sh')
3.查找目录中以单个字符命名并以.sh为后缀的文件
4.查找/data目录中的a.sh或b.sh的文件
4.math模块:
数字处理模块
5.random模块:
生成随机数
6.platform模块:
获取操作系统详细信息
7.pickle与cPickle模块:
创建可移植的Python序列化对象,持久化存储到文件
(1)pickle
pickle库有两个常用的方法,dump()、load() 和dumps()、 loads()
dump()方法是把对象保存到文件中。格式:dump(obj, file, protocol=None)
load()方法是从文件中读数据,重构为原来的Python对象。格式:load(file)
举例:
1.使用dump()方法将字典序列化到文件
import pickle dict = {'a':1,'b':2,'c':3} output = open('/data/data.plk','wb') pickle.dump(dict,output) output.close()
2.使用load()方法读取data.plk文件
dumps()返回一个pickle格式化的字符串。格式:dumps(obj, protocol=None)
loads()解析pickle字符串为对象。
举例:
#创建安一个字符串s
s = 'abc'
#使用dumps()方法返回一个pickle格式化的字符串
pkl = pickle.dumps(s) pkl
#使用loads()方法解析pickle字符串为对象
pickle.loads(pkl)
(2)cPickle
cPickle库是C语言实现,对pickle进行了优化,提升了性能,代码中建议使用。cPicke提供了与pickle相同的dump()、load() 和dumps()、 loads()方法,用法一样。
8.subprocess模块:
subprocess库会fork一个子进程去执行任务,连接到子进程的标准输入、输出、错误,并获得它们的返回代码。这个模块将取代os.system、os.spawn*、os.popen*、popen2.*和commands.*。
(1)subprocess.call():运行命令与参数。等待命令完成,返回执行状态码。
#导入subprocess
import subprocess
方法一:
subprocess.call(["ls", "-l"])
方法二:
subprocess.call('ls -l', shell=True)
(2)subprocess.Popen():subprocess模块中只定义了一个类: Popen。
可以使用Popen来创建进程,并与进程进行复杂的交互。它的构造函数如下:
subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)
subprocess.Popen()类又提供的方法:
Python常用标准库(一)相关推荐
- Python常用标准库之正则表达式
Python常用标准库之正则表达式 1.re模块常用函数 1.1 匹配对象以及group()和groups()方法 1.2 match()与search():匹配单个目标 1.3 findall(): ...
- python常用标准库的基本用法_Python常用标准库之fileinput
Python常用标准库之fileinput fileinput模块用于对标准输入或多个文件进行逐行遍历.这个模块的使用非常简单,相比open()方法批量处理文件,fileinput模块可以对文件.行号 ...
- 【博学谷学习记录】超强总结,用心分享 | 人工智能编程语言Python常用标准库(上)
Python常用标准库 上 sys库 time库 random库 math库 os库 shutil库 Python语言的急速发展很大程度上得益于其开放共享的特点和良好的社区支持和计算生态,拥有超过十几 ...
- python 常用标准库
python 常用标准库 1.文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata:Unicode字符数据库 st ...
- CSDN21天学习挑战赛——Python常用标准库概述
活动地址:CSDN21天学习挑战赛 Python有一套标准库,随着python一起安装在电脑中,是python的一个组成部分. 一.os操作系统库 os模块提供了很多与操作系统相关联的函数. 在导入 ...
- python常用标准库有哪些-Python - 常用标准库
sys 和Python解释器关系密切的标准库 sys.__doc__中已经说明了:这个模块提供了对一些对象的访问使用或维护的解释器和交互的功能强的解释 sys.argv 变量,专门用来向Python解 ...
- python常用标准库有哪些-Python 常用的标准库以及第三方库有哪些?
我在专栏文章中写过一篇 Python不能不知的模块 - Python之美 - 知乎专栏,列举了一些标准库中一些不太出名但是都应该要掌握的模块: 1. argparse. 用来替代optparse的命令 ...
- python常用标准库有哪些-Python开发中常用的标准库
大多数基于 Python 开发的应用程序都会用到本地标准库和三方库,这样不仅能让我们把时间去关注真正的业务开发,也能学习到更多价值含量高的程序设计和开发思想.程序开发中有一句著名的话叫做: Don't ...
- python常用标准库有哪些-Python 200个标准库汇总
文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata:Unicode字符数据库 stringprep:互联网字符串 ...
最新文章
- 双向slider滑动微信小程序组件slider组件
- 向git库提交代码出现”There are no staged files怎么办?
- 用python画哆啦a梦的代码解释_python画哆啦A梦和大雄
- 杭州/北京/新加坡 | 蚂蚁集团数字身份团队招聘计算机视觉算法实习生
- Libra教程之:Libra protocol的逻辑数据模型
- 简单实用的分页存储过程,支持多字段排序
- grep匹配上下几行的方法
- O(n)复杂度求没有出现的数字(leetcode448)
- 解决UE4 Launcher启动速度极慢的方法
- Hibernate持久化对象状态
- jmc线程转储_Java线程转储– VisualVM,jstack,kill -3,jcmd
- windows xp sp3 下载地址
- 用c语言写一个文件加密程序,用C语言设计程序进行文件的加密
- MAC 谷歌浏览器提示您的连接不是私密连接,没有继续访问选项
- 解决iOS8下ALAssetsLibrary创建相册的bug
- 红帽linux性能参数,红帽企业版Linux6性能调节指引.PDF
- 「 LaTex 」写论文,作者旁添加ORCID
- KISSY基础篇乄KISSY之DOM(2)
- 计算机病毒语音,新病毒:让被感染的计算机发出语音提醒
- jee Java什么意思_JEE、J2EE与Jakarta等概念解释
热门文章
- 中级软考-软件设计师(六)
- 疯狂动物城的代码,还需要修改,但有一点雏形
- QingScan v1.1.0 版本发布会实录
- 【论文阅读】inception v1学习总结
- 基于深度学习的2D图像目标检测
- 计算机三维动画学什么,计算机三维动画设计教学大纲..doc
- 【IEEE/ACM专区】一篇高质量的IEEE/ACM Transaction论文是如何顺利发表的?
- bootstrap开发tab选项卡事例
- 硅谷企业SaaS服务教父:如何衡量与优化SaaS企业的核心指标
- 1631 小鲨鱼在51nod小学(线段树区间修改+单点查询:不用下传lazy的区间修改)