今天介绍几个好用到爆的Python内置库,相信大家看过之后会对今后的编程帮助多多

argparse
当中的模块主要用于命令行的参数解析,可以帮助用户轻松地编写命令行接口,我们先来看一个例子
import argparse#解析参数parser = argparse.ArgumentParser()parser.addargument("name")args = parser.parseargs()#打印结果print(fHello {args.name}!)
然后我们在终端当中运行以下的代码
python pythonpackage.py 俊欣
就会出现以下的结果
Hello 俊欣!
要是我们忘记带上参数了,会自动出现如下的提示
usage: pythonpackage.py [-h] namepythonpackage.py: error: the following arguments are required: name
当然我们也可以通过如下的命令行来查看需要添加什么样的参数
python pythonpackage.py -h
出来的结果如下所示
positional arguments: nameoptional arguments:-h,--help show this help message and exit
当然我们并不知道这个name的参数到底指的是什么,因为我们可以更改一下我们写的程序
import argparse#解析参数, help="Enter your name")print(f)
这样的话,我们再来运行一下如下的命令行
output
name Enter your name -h,--help show this help message and exit
有时候我们想要输入的不止一个参数,我们可以这样来做,
import argparse#解析参数, help=)"age", help=Enter your age, type=int)bornyear =2022- args.ageprint(fHello {args.name}! You were borned in {bornyear}.)
我们通过终端输入如下的程序
python pythonpackage.py 俊欣24
Hello 俊欣! You were borned in 1998.
shutil
模块提供了大量的文件高级操作。特别是针对文件的拷贝、删除、移动、压缩和解压缩等操作,我们先来看一个例子
import shutilprint(shutil.which("python"))
路径......
上面返回的是可执行程序的路径,文件移动的代码是shutil.move(src, dst)
shutil.move("源路径","目标路径")
除此之外我们主要会用到的还有:
shutil.copyfile(src, dst):复制文件shutil.copytree(olddir, newdir, True/False):复制整个文件夹目录shutil.rmtree(src):递归删除一整个目录以及目录文件夹下的所有内容
glob
模块主要是用来查找符合特定规则的目录和文件,并将查找出来的结果返回到一个列表当中来。它还可以和正则通配符一起来使用,例如
def choosenumberedfiles(root="."):return glob.glob(f"{root}/[0-9].*")choosenumberedfiles("images")
返回的是在images路径下的带有数字的文件,结果如下
[images\\1.gif,images\\1.png,images\\2.gif,images\\2.png,images\\3.png,]
上面用到的glob.glob()返回的是符合匹配条件的所有文件的路径,而glob.iglob()返回的是一个迭代对象,需要循环遍历获取每个元素之后得到符合匹配条件的所有文件的路径。
pprint
模块提供了“美化打印”任意数据结构的功能,方便使用者阅读,要是用普通的print来打印的话,如下
nested =[list("abcs"), list("sdff"),[1,45,4,6,7,8], list(range(12))]print(nested)
[[a,b,c,s],[,d,f,],[1,45,4,6,7,8],[0,1,2,3,4,5,6,7,8,9,10,11]]
而用模块来打印的话,如下
from pprint import pprintpprint(nested)
[[,, ,],[,, ,],[1,45,4,6,7,8],[0,1,2,3,4,5,6,7,8,9,10,11]]
我们还能够对键值对类型的数据进行格式化的输出,代码如下
import jsonimport pprintfrom urllib.request import urlopenwith urlopen(https://pypi.org/pypi/sampleproject/json) as resp: projectinfo = json.load(resp)[info]pprint.pprint(projectinfo)
{author:A. Random Developer,authoremail:,bugtrackurl: None,classifiers:[.......],descriptiondescriptioncontenttype:text/markdown,docsurl: None,downloadurl:,downloads:{.........},homepage:https://github.com/pypa/sampleproject,keywords:sample setuptools development,license:,maintainer:,maintaineremail:,name:sampleproject,packageurl:https://pypi.org/project/sampleproject/,platform:,projecturl:,projecturls:..........,requiresdist:[..........],requirespython:>=3.5,<4,summary:A sample Python project,version:2.0.0,yanked: False,yankedreason: None}
statistics
当中的模块提供了更加完善的数据统计操作,例如对中位数的计算就提供了medianlow()、medianhigh()两种方法,分别来计算数据的低中位数(偶数个样本时取中间两个数的较小者),代码如下
statistics.medianlow([1,3,5,7])
3
和高中位数(偶数个样本时取中间两个数的较大者),代码如下
statistics.medianhigh([1,3,5,7])
5
除此之外,例如平均数、众数、标准差、方差等等都能够计算,例如
x1= statistics.mode([1,1,2,3,4,3,3,3,3])print(x1)x2= statistics.mode(["a","b","c","d",,,,])print(x2)
calendar
当中的日历模块提供了对日期的一系列操作方法,并且可以生成日历,代码如下
import calendarprint(calendar.calendar(2022))
当然我们也可以打印出某一个月份的日历,代码如下
import calendarprint(calendar.month(2022,3))
March 2022Mo Tu We Th Fr Sa Su 12 34 56 78 910111213141516171819202122232425262728293031
calendar.isleap(year)是闰年则返回True,否则返回False,例如
import calendarprint(calendar.isleap(2022))