python标准库是什么语言写的,Python标准库有哪些
Python语言提供了非常大量的组件本文以列表的形式展示了它们,其中描述并提供了常见的组件及其核心用途
这些标准库很多都是用C语言写的,所以执行效率非常高
通用标准库列表如下
osmathrandompiklesubprocessqueuestringiologgingsontimedatetimerecsvthreadingasyncio如何使用syssys模块处理与Python解析器相关的变量和方法,如获取命令行参数、退出Python程序、获取输入输出相关内容等
Osos模块,即系统模块,提供与访问操作系统相关的功能os模块中的一些接口被特定的平台使用,所以需要特殊的内存
强函数
系统API目录和文件操作执行命令管理进程的mathmath模块提供了C标准定义的数学函数,但是这些函数不适合复数常用的方法有ceil(),floor(),abs(),sin()等
有些常数,比如math.pi,出勤率非常高
Randomrandom模块用于生成伪随机数,伪随机数由随机种子根据算法计算得出可以直接用来处理一些简单的逻辑随机数
Pikle这个模块用于Python中的数据持久化,可以持久化各种类型的数据该模块的持久化数据不能直接读取,只能在Python代码中读取
子流程该模块主要用于流程操作您可以使用它来执行操作系统级别的命令学习时,首先要掌握run()方法,用它来创建子进程和操作系统命令
队列模块用于在内存中存储数据和交换数据
StringIOStringIO模块,可以在内存中存储字符串,然后像文件一样操作
日志记录模块
操作json格式数据的模块
和datetime模块,时间模块目前只支持到2038年如果超过这个时间,将使用datetime模块
正则表达式处理模块
CSV文件操作模块
线程多线程模块,一个非常重要的高级模块
异步输入输出模块
时间,datetime时间模块,calendar日历模块实例接下来介绍一些典型的标准库,从日期时间库开始
Python中没有原生数据类型支持时间,日期和时间的操作需要借助三个模块,即时间、日期时间和日历
时间模块可以操作C语言库中的时间相关函数,可以得到时钟时间和处理器运行时间
Datetime模块提供了日期和时间之间的高级接口
日历模块是一个通用的日历相关功能,用于创建周、月和年的周期性事件
在学习之前,有一些术语需要补充你可以把这些条款当成套路这里的Python官方文档中也有相关说明,但还有更多信息橡皮擦是你必须知道的摘录的一部分
Epoch(历元)是时间的起点,其值取决于平台
对于Unix,纪元是1970年1月1日00:00:00(UTC)要找出给定平台上的纪元,请使用time.gmtime(0)查看它,例如,eraser computer显示:
时间struct _ time (tm _ year=1970,tm _ mon=1,tm _ mday=1,tm _ hour=0,tm _ sec=0,tm _ wday=3,tm _ yday=1,tm _ isdst=在所有与POSIX兼容的平台上,闰秒不会记录在总秒数中
程序员经常把纪元秒称为时间戳
Get_clock_info函数该函数获取时钟的基本信息,由于系统不同,获取的值也不同该函数的原型相对简单:
Time.get_clock_info(name ),其中name可以采用以下值:
tonic:time . monotonic()perf _ counter:time . perf _ counter()process _ time:time . process _ time()thread _ time:time . thread _ time()time:time . time()该函数的返回值具有以下属性:
可调:返回真或假如果时钟可以自动更改(例如,通过NTP守护程序)或由系统管理员手动更改,则为True否则为False实现:用来获取时钟值的基本C函数的名字是调用底层C的函数;单调:如果时钟不能倒退,则为真,否则为假;分辨率:以秒为单位的时钟分辨率(浮点)导入时间
可用时钟=[
(时钟,time.clock),
( monotonic ,time.monotonic),
(性能计数器,时间.性能计数器),
(流程时间,时间.流程时间),
( time ,time.time),
]
对于时钟名称,可用时钟中的函数:
打印(“”)
{姓名}:
可调:{info.adjustable}
实现:{info.implementation}
单调:{info.monotonic}
分辨率:{info.resolution}
当前:{当前}
.格式(
名称=时钟名称,
info=time.get_clock_info(时钟名),
Current=func()))运行结果如下图所示
图中显示橡皮擦计算机以同样的方式调用clock和perf_counter中的底层C函数
在Python中Get Timestamp,epoch秒是通过time.time()函数获取的,该函数可以浮点格式返回epoch之后的秒
导入时间
print(time.time())
#输出结果1615257195.558105时间戳广泛用于计算时间相关的程序,属于必须掌握的内容
获取可读时间戳主要是为了方便计算时间,人们很难理解如果您想获得可读的时间,使用ctime()函数获得它
导入时间
print(time.ctime())
#输出内容:Tue Mar 9 10:35:51 2021如何将时间戳转换为可读时间,只需使用localtime函数即可
本地时间=时间.本地时间(时间.时间())
print (localtime is:,localtime)的输出结果是 time.struct_time 类型的数据,稍后将对其进行格式化:
当地时间是:时间struct _ time (TM _ year=2021,TM _ mon=3,TM _ mday=9,TM _ hour=10,TM _ min=37,TM _ sec=27,TM _ wday=1,TM _ yday=68,)
导入时间
localtime=time.localtime(0)
打印(时间为:,本地时间)
#时间:时间struct _ time (TM _ year=1970,TM _ mon=1,TM _ mday=1,TM _ hour=8,TM _ min=0,TM _ sec=0,TM _ wday=3,TM _ yday=1,TM
local time=time . local time(32536799999)
打印(时间为:,本地时间)
#时间:时间struct _ time (TM _ year=3001,TM _ mon=1,TM _ mday=19,TM _ hour=15,TM _ min=59,TM _ sec=59,TM _ wday=0,TM _ yday=19)
local time=time . local time(9999999999)
打印(时间为:,本地时间)
# OSError: [Errno 22]无效参数
Print(type(localtime))单调时间单调时间从系统启动开始,从0开始单调递增
系统的运行时间可能不是从0开始,会因为时间误差而回调
这个函数的原型如下它不需要任何参数,并返回一个浮点数,该浮点数表示几分之一秒内单调时钟的值:
time.monotonic()测试代码如下:
Print(单调时间,time.monotonic())
#输出:单调时间12279.244处理器时钟时间time()函数返回纪元秒(时间戳),clock()函数返回处理器时钟时间
该函数的返回值:
第一次调用时,返回程序的实际运行时间;第二次调用后,返回从第一次调用到本次调用的时间间隔请注意,Python 3.8删除了clock()函数,代之以time.perf_counter()或time.process_time()方法
t0=time.clock()
#运行一段代码
Print(time.clock()-t0,程序运行时间)我用的Python版本更高,异常如下:
time.clock在Python 3.3中已被弃用,将从Python 3.8中移除:使用time.perf_counter或time.process_time代替t0=time.clock() Epoch (epoch)性能计数器time.perf_counter perf_counter()函数未定义一般这个函数是用来比较和计算的,不是用来绝对时间的这一点需要注意
此功能用于在短时间内以最高有效精度测量时钟,包括处于睡眠状态的时间打两次电话才有效
测试代码如下:
t0=time.perf_counter()
#运行一段代码
对于范围内的I(100000):
及格
Print(程序运行时间,time.perf_counter()-t0)和它类似的函数有perf_counter_ns(),process_time()和process_time_ns()具体可以查阅手册学习,先掌握perf_counter()函数即可
时间组件关于时间组件的知识上面已经讲过了,localtime获取struct_time类型的数据
这里涉及的函数有gmtime()返回UTC中的当前时间,localtime()返回当前时区对应的时间,mktime()接收struce_time类型的数据并转换成浮点值,即时间戳
打印( **10)
print(time.gmtime())
打印( **10)
print(time.localtime())
打印( **10)
print(time . mktime(time . local time()))struct _ time类型的内容
上述代码返回的数据格式是:
time.struct_time(tm_year=2021,tm_mon=3,tm_mday=9,tm_hour=12,tm_min=50,tm_sec=35,tm_wday=1,tm_yday=68,Tm_isdst=0)每个值都可以按照英文意思来理解:tm_year year(范围[1,12]),tm_mon month(范围[1,12]),tm_mday days(范围[1,31]),tm_hour
而解析和格式化时间strptime()和strptime()的函数可以使时间值在struct_time表示和string表示之间进行转换
strftime函数请参考官方参数
x=time . strftime( % Y-% M-% d % H:% M:% S ,time.localtime())
打印(x)
在这里没有什么难学的,只有熟能生巧的知识
strptime函数的应用
x=time . strftime( % Y-% M-% d % H:% M:% S ,time.localtime())
打印(x)
# direction操作,字符串格式为time.struct_time
struct_time=time.strptime(x, %Y-%m-%d %H:%M:%S )
print(struct_time)需要记住的是strftime和strptime函数的区别只是在字符中间,一个是F,一个是p
Datetime模块,比time模块高级很多,封装了time模块,提供了更强大的功能
在datetime模块中,Python提供了五个主要的对象类,如下所示:
Datetime:允许时间和日期同时操作;日期:只操作日期;时间:仅操作时间;Timedelta:用于操作日期和测量时间跨度;Tzinfo:正在处理时区日期类优先展示它的一些属性和方法,是内存中的知识
Min,max:date对象可以表示的最大和最小日期;resolution:date对象表示日期的最小单位,并返回天数;Today():返回表示当前本地日期的date对象;Fromtimestamp(timestamp):根据时间戳返回一个日期对象测试代码如下:
从日期时间导入日期
导入时间
print(日期分钟:,日期分钟)
print(date.max:,date.max)
打印( date.resolution:,date.resolution)
print(date.today():,date.today())
Print (date.fromtimestamp():,date.fromtimestamp (time.time()))输出结果:
日期:分钟:0001年1月1日
最大日期:9999年12月31日
日期.分辨率:1天,0:00:00
日期:今天():2021-03-09
Date . fromtimestamp():2021-03-09日期对象属性和方法
使用以下代码创建一个日期对象:
d=日期(年=2021,月=3,日=9)
Print(d)这个对象有以下属性和方法:
D.year:返回年份;D.month:返回当月;D.day:返回日;D.weekday():返回weekday,如果是星期一,返回0;如果是星期二,返回1,以此类推;D.isoweekday():返回weekday,如果是星期一,返回1;如果是星期二,返回2,以此类推;D.isocalendar():返回格式如(year,wknum,wk day);D.isoformat():返回格式为“YYYY-MM-DD”的字符串;D.strftime(fmt):一个定制的格式化字符串,类似于time模块中的strftime由类时间类定义的类属性:
Min,max:时间类可以表示的最小和最大时间其中time.min=time(0,0,0,0),time.max=time (23,59,59,99999);分辨率:最小的时间单位,这里是1微秒;时间对象可以由其构造函数创建
t=时间(小时=20,分钟=20,秒钟=40)
print(t) time类提供的方法和属性示例:
T.hour,t.minute,t.second,t .微秒:时、分、秒、微秒;T.tzinfo:时区信息;T.isoformat():返回类型为“HH:MM:SS”格式的字符串时间表示;T.strftime(fmt):返回自定义格式的字符串这个类是日期类和时间类的组合前面介绍了很多属性和方法,增加了一些常用的属性和方法
获取当前日期和时间:
从日期时间导入日期时间
dt=datetime.now()
打印(dt)获取时间戳:
dt=datetime.now()
#使用datetime的内置函数timestamp()
stamp=datetime .时间戳(dt)
print(stamp)timedelta类通过timedelta函数返回timedelta时间间隔对象,该函数没有必需的参数如果写的是整数,表示两者之间的天数
#相隔10天
时间增量(10)
# Span为1周
Time (weeks=1)两个时间间隔对象可以相加或相减,但仍返回一个时间间隔对象
如果从time interval对象中减去datetime对象,则返回的datetime对象对应于减去的datetime对象,如果减去两个datetime对象,则返回time interval对象
关于datetime类使用的更多信息,请参考官方手册
日历模块(Calendar)这个模块的功能都是日历相关的,比如打印一个月的字符日历
calendar模块定义了Calendar类,它封装了值的计算,例如给定月份或年份中的星期几TextCalendar和HTMLCalendar类可以生成预格式化的输出
基本代码:
导入日历
c=日历TextCalendar(日历周日)
C.prmonth(2021,3)上面的代码,默认从星期日开始,输出结果是:
2021年3月
宿墨你知道吗
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31随机函数模块种子和随机函数种子函数初始化一个随机种子,默认为当前系统时间
random函数生成一个介于[0.0,1.0]之间的随机十进制数
具体代码如下:
随机导入
随机种子(10)
x=random.random()
Print(x)其中,random.seed函数需要说明一下通过种子函数,每次都可以生成相同的随机数,比如下面的代码:
随机导入
随机种子(10)
x=random.random()
打印(x)
随机种子(10)
y=random.random()
print(y)得到的值在不同的代码中是不同的,但是x和y是相同的
0.5714025946899135
0.5714025946899135getstate()和setstate(state) getstate函数用于记录随机数生成器的状态,setstate函数用于将生成器恢复到上次记录的状态
#记录发电机的状态
state_tuple=random.getstate()
对于范围(4)中的I:
print(random.random())
打印( **10)
#传入参数后恢复之前的状态
random.setstate(状态元组)
对于范围(4)中的j:
print(random.random())输出的随机数两次一致
0.10043296140791758
0.6183668665504062
0.6964328590693109
0.6702494141830372
**********
0.10043296140791758
0.6183668665504062
0.6964328590693109
0.6702494141830372randint和randrange randint生成[x,y]区间内的整数
RAND生成一个范围为[m,n]的随机整数,步长为k
测试代码如下:
x=random.randint(1,10)
打印(x)
y=random.randrange(1,10,2)
Print(y)这两个函数比较简单randint函数的原型如下:
random.randint(start,stop)参数start表示最小值,参数stop表示最大值,两端都是封闭区间,即start和stop都可以得到
RAND函数的原型如下:
随机的randrange (start,stop,step)如果一个函数被调用时只有一个参数,默认值是从0到参数值这个函数和randint的区别是,函数左闭右开,最后一个参数是步长
检查效果,可以复制下面的代码来运行:
对于范围(3)中的I:
打印( **20)
print(random.randrange(10))
print(random.randrange(5,10))
Print (random.randrange (5,100,5)) getrandom bits (k)和choice (seq) getrandom bits生成一个长度为k位的随机整数,实际输出的是由k位的二进制数转换而来的十进制数
Choice从序列中随机选择一个元素
x=random.getrandbits(5)
打印(x)
#生成长度为00000-11111 getrandom bits (k)函数可以简单描述为:输出一个范围内的随机整数,k代表二进制位数
选择更简单,从列表中返回一个随机元素
随机导入
my_list=[a , b , c]
print(random . choice(my _ list))shuffle(seq)和sample(pop,k) shuffle函数用于对序列中的元素进行随机排序,并修改原始序列
Sample函数用于从一个序列或集合中随机选择k个选项,原序列不变
我的列表=[1,2,3,4,5,6,7,8,9]
random.shuffle(我的列表)
Print(my_list) shuffle函数只能用于可变序列,不可变序列(比如元组)会有错误
My_list=[dream , eraser ,1,2,[3,4]]
打印(我的列表)
ls=random.sample(my_list,4)
print(ls)uniform(a,b)、betavary和triangular function uniform以相等的概率分布在[a,b]之间生成一个随机小数
Betavariate生成一个[0,1]之间的随机小数,采用beta分布
三角形生成一个[低,高]之间的随机小数,采用三角形分布
当使用uniform时,需要注意的是,如果A是B,那么B和A之间会产生一个十进制数
对于范围(3)中的I:
Print(random.uniform(4,1))其他分布式随机函数以下方法都是随机数的生成方法,只是底层核心算法不同
、
指数变量:生成一个(0,∞)之间的随机整数,指数分布;伽玛变量:采用微克分布;高斯:采用高斯(正太)分布;对数正态变量:对数正太分布;正常变量:正太分布;vonmisesvariate:冯米赛斯分布;帕累托变量:帕累托分布;威布尔变量:韦伯分布骨库在计算机编程语言中骨库提供了基本的操作系统交互功能,该库下包含大量与文件系统、操作系统相关的函数,通过目录函数可以查看
[DirEntry , F_OK , MutableMapping , O_APPEND , O_BINARY , O_CREAT , O_EXCL , O_NOINHERIT , O_RANDOM , O _ RDONLY , O_TEXT , O_TRUNC , O_WRONLY , P_DETACH , P_NOWAIT , P _ NOWAIT , P_OVERLAY , P_WAIT , PathLike , R_OK , SEEK_CUR , SEEK_SET , get_exec_path , get _ handle _ inheritable , name , open , pardir , path , pathsep , pipe , popen , putenv , read , read , link , remove , rename ,内容太多,通过截图查阅比较清晰
这些函数主要分为几类
路径操作:os.path子库,处理文件路径及信息;进程管理:启动系统中其它程序;环境参数:获得系统软硬件信息等环境参数骨库路径操作os.path在骨库中用于提供操作和处理文件路径相关函数,常见的函数清单如下:
函数名
简介
os.path.abspath(路径)
返回绝对路径
os.path.normpath(路径)
规范小路字符串形式
os.path.realpath(路径)
返回小路的真实路径
os.path.dirname(路径)
返回文件路径
os.path.basename(路径)
返回文件名
os.path.join(路径1[,路径2[,…]])
把目录和文件名合成一个路径
os.path.exists(路径)
如果路径小路存在,返回真实;如果路径小路不存在,返回错误
os.path.isfile(路径)
判断路径是否为文件
os.path.isdir(路径)
判断路径是否为目录
os.path.getatime(路径)
返回最近访问时间(浮点型秒数)
os.path.getmtime(路径)
返回最近文件修改时间
os.path.getsize(路径)
返回文件大小,如果文件不存在就返回错误
以上函数的使用过程比较容易理解,导入模块之后,调用即可
模块导入使用下述方式:
导入os.path
#将os.path作为外科手术导入
变量=OS路径ABS路径(_ _ file _ _)
打印(变量)函数的参数都是路径,在传入的时候,特备要注意原生字符串的应用,还有要区分绝对路径和相对路径的问题
因为路径相关库比较简单,所有东西试一次就能掌握,其他内容可以在手册里学习
Os库进程管理该内容主要用于执行Python中的程序或命令Command功能原型是:
Os.system(command)比如用Python唤醒画板程序
OS . system( c:\ windows/system32/ms paint . exe )除了系统函数,还有关于os.exec函数族的知识您可以特别检查以下功能的使用情况:
os.execl(路径,arg0,arg1,…)
os.execle(path,arg0,arg1,…,env)
os.execlp(文件,arg0,arg1,…)
os.execlpe(file,arg0,arg1,…,env)
os.execv(路径,参数)
os.execve(path,args,env)
os.execvp(文件,参数)
os.execvpe(文件,参数,环境)
这些功能都将执行一个新的程序来代替当前的进程
Os库运行环境相关参数环境参数,顾名思义,就是改变系统环境信息,或者理解为Python运行环境相关信息
环境变量可以通过以下属性获得:
Os.environ如果要获取操作系统类型,使用os.name,目前只有三个值:posix,nt,java
功能部分,主要功能有:
Os.chdir(path):修改当前程序操作的路径;Os.getcwd():返回程序运行的路径;Os.getlogin():获取当前登录用户名;Os.cpu_count():获取当前系统中cpu的数量;Os.urandom(n):返回一个n字节长的随机字符串,用于加密操作Sys库这个库主要维护一些与Python解释器相关的参数变量和方法
常见属性有sys.argv
获取命令行参数列表,第一个元素是程序本身
使用方式如下:
导入系统
Print(sys.argv)接下来,通过控制台运行python程序时,需要携带参数下面的代码312.py是python文件名,1、2、3是后缀参数
Python 312.py 1 2 3执行完程序后,结果是:
[312.py , 1 , 2 , 3]第一个是文件名,后面是传入的参数
系统平台
获取Python运行平台的信息,结果比os.name更准确
sys.path
获取PYTHONPATH环境变量的值,该变量一般用作模块搜索路径
导入系统
打印(系统路径)系统模块
以字典的形式获取当前Python环境中所有导入的模块
系统标准输入,系统标准输出,系统标准错误
变量sys.stdin、sys.stdout、sys.stderr包含对应于标准I/O流的流对象
导入系统
#标准输出,sys.stdout.write()的形式是不带 \n 的print()的形式
sys.stdout.write(hello )
sys . stdout . write( world )sys . stdin标准输入,相当于input
Sys.ps1和sys.ps2
指定解释器的主要和次要提示解释器只有在交互模式下才被定义具体测试如下:
PS python
python 3 . 7 . 3(3 . 7 . 3版:xxxxx
x,Mar 25 2019,22:22:05) [MSC v.1916 64位(AMD64)]在win32上
有关详细信息,请键入“帮助”、“版权”、“配额”或“许可证”。
导入系统
sys.ps1
sys.ps1=***
* * *打印(“你好”)
常见的hello方法如下**sys.exit(n) **
退出Python程序,exit(0)表示正常退出。
当参数不为0时,将抛出SystemExit异常,该异常可以在程序中捕获。参数也可以称为状态代码。
sys.getdefaultencoding()、sys.setdefaultencoding()、sys . getfile system coding()
Sys.getdefaultencoding():获取当前系统代码。有些博客默认写ascii,但我本地默认是UTF-8;Sys.setdefaultencoding():设置系统的默认编码;Sys.getfilesystemencoding():获取文件系统使用的编码方式,默认为utf-8。sys.getrecursionlimit()、sys.setrecursionlimit()
获取Python的最大递归数,设置最大递归数。
sys.getswitchinterval()、sys.setswitchinterval(interval)
获取并设置解释器的线程切换间隔(秒)。
转载请联系作者取得转载授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。