Python语言的急速发展很大程度上得益于其开放共享的特点和良好的社区支持和计算生态,拥有超过十几万数量的第三方库极大地让开发者避免了重复造轮子。正所谓,人生苦短,我用Python。其实,Python已经内置了很多的标准库,无需单独安装,可以直接import导入使用。笔者就初学者经常遇到的标准库及其常用方法进行了梳理,主要有12个:sys库、time库、random库、math库、os库、shutil库、turtle库、socket库、multiprocessing库、threading库、copy库和re库,本文先介绍前6个标准库。
sys库主要提供了与程序运行相关的变量和方法。使用print(dir(sys))
查看sys库包含的所有操作和方法,可以看出它包含了丰富的函数,每个函数方法直接调用即可:
下面是sys库常用的几个方法:
sys.version
查看解释器版本(笔者的是3.7.3);sys.executable
查看解释器的绝对路;sys.path
查看搜索模块的路径;sys.platform
查看当前平台(win32);sys.getdefaultencoding()
和sys.getfilesystemencoding()
分别查看解释器和系统默认编码(utf-8);sys.copyright
查看解释器版权信息;sys.maxsize
查看系统最大 int 值(263 -1);sys.maxunicode
查看最大Unicode代码点值的整数(1114111即0x10FFFF);sys.getsizeof()
获取(参数中的)对象占用的内存大小即字节数;sys.argv
获取传递给Python脚本的命令行参数列表。如:现有test.py文件如下,在控制台使用命令执行 “python test.py 123 abc”,将会得到命令中传递的参数。# test.py
import sys
if __name__ == '__main__':
args = sys.argv
print(args,args[0],args[1],args[2]) # ['test.py', '123', 'abc'] test.py 123 abc
time库是Python中处理时间的标准库,提供获取本机系统时间信息的方法,并能格式化输出,还提供了系统级精确计时功能,用于程序性能分析。常用方法如下:
time.time()
获取当前时间戳,即计算机内部时间值,输出的是浮点数(如:1516939876.602228);time.ctime(seconds)
获取当前时间并以易读方式表示,返回字符串(如:‘Fri Jan 26 12:11:16 2018’);time.gmtime()
获取当前时间,表示为计算机可处理的时间格式(如:time.struct_time(tm_year=2018, tm_mon=1, tm_mday=26, tm_hour=4, tm_min=11, tm_sec=16, tm_wday=4, tm_yday=26, tm_isdst=0));time.strftime(format, ts)
将时间格式化并以合理的方式展示,展示模板由特定格式化控制符组成,如:print(time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime())) # 2018-01-26 12:55:20
time.perf_counter()
返回一个CPU级别的精确时间计数值,单位为秒,一般使用差值计算某一过程的用时,如:start = time.perf_counter()
### 这里是需要计时的过程
end = time.perf_counter()
print(f'该过程用时:{end - start}s')
time.sleep(seconds)
令程序休眠指定参数时间,参数单位为秒,可以是浮点数,如:time.sleep(3.3) # 程序运行至此将等待3.3秒后再执行
random库是使用随机数的Python标准库,主要用于生产随机数,采用的是梅森旋转算法生成(伪)随机序列中的元素。常用方法如下:
random.seed(a=None)
初始化给定的随机数种子,默认为当前系统时间,如:random.seed(10) # 产生种子10对应的序列
;random.random()
生成一个 [0, 1) 之间的随机小数(如:0.5714025946899135);random.randint(a, b)
生成一个 [a, b] 之间的整数;random.randrange(m, n[, k])
生成一个 [m, n) 之间以 k 为步长的随机整数,如:print(random.randrange(10, 100, 10)) # 80
random.getrandbits(k)
生成一个 k 比特长的随机整数,如:print(random.getrandbits(10)) # 437
random.uniform(a, b)
生成一个 [a, b] 之间的随机小数,如:print(random.uniform(8, 18)) # 10.77520661454443
random.choice(seq)
从seq序列中随机选择一个元素并返回,如:print(random.choice(['a','b','c','d','e'])) # b
random.shuffle(x)
将列表x中的元素顺序随机打乱,函数返回None,如:t = ['a','b','c','d','e']
random.shuffle(t)
print(t) # ['a', 'd', 'e', 'c', 'b']
顾名思义,math库提供了许多数学函数,可以用来进行整数和浮点数的各种数学运算,如:绝对值、阶乘、取模、取整、指数函数、对数函数、三角函数等等。另外还包含有几个数学常数,如:π和e。这一部分可以参考:Python:math库(数学库)介绍及其使用 和 python的math库函数汇总。
os库提供通用的、基本的操作系统交互功能,包含了上百个函数,常用路径操作、进程管理、环境参数等几类。
os.path.abspath(path)
返回path在当前系统中的绝对路径;os.path.normpath(path)
归一化path的表示形式,统一用 \ 分隔路径;os.path.relpath(path)
返回当前程序与文件之间的相对路径;os.path.dirname(path)
返回path中的目录名称;os.path.basename(path)
返回path中最后的文件名称;os.path.join(path, *paths)
组合path和paths,返回一个路径字符串,如:print(os.path.join("D:/","PYE/title.txt")) # D:/PYE/title.txt
os.path.exists(path)
判断path对应文件或目录是否存在,返回True或False;os.path.isfile(path)
判断path对应的是否是已存在的文件,返回True或False;os.path.isdir(path)
判断path对应的是否是已存在的目录,返回True或False;os.path.getatime(path)
返回path对应文件或目录上一次的访问时间;os.path.getmtime(path)
返回path对应文件或目录最近一次的修改时间;os.path.getctime(path)
返回path对应文件或目录的创建时间;os.path.getsize(path)
返回path对应文件的大小,以字节为单位;os.system(command)
执行程序或命令command,返回值为cmd的调用返回信息,如:os.system("C:\\Windows\\System32\\calc.exe")
将打开计算器。os.getcwd()
返回程序的当前路径;os.listdir()
返回包含当前目录下的文件结构的列表;os.mkdir(path)
创建一个目录path;os.chdir(path)
修改当前程序操作的路径;os.remove(file)
删除一个已存在的文件file;os.rmdir(path)
删除一个已存在的目录,该目录必须为空目录;os.rename(src, dst)
修改一个文件名或目录名;os.getlogin()
获得当前系统登录用户名称;os.cpu_count()
获得当前系统的CPU数量;os.urandom(n)
获得n个字节长度的随机字符串,通常用于加解密运算。shutil库提供了许多关于文件和文件集合的高级操作,最主要的功能就是提供了对文件和文件夹的复制、移动和删除功能,如:shutil.rmtree(path)
删除文件夹,path表示要删除的文件夹。注意这里和os库中remove() 、rmdir()的用法不同,os.remove()方法只能删除某个文件,os.rmdir()只能删除某个空文件夹,但是shutil库中的rmtree()可以递归彻底删除非空文件夹。关于该库更多方法可以参考:Python标准库shutil的使用( 文件复制删除、文件夹复制删除、压缩包 压缩解压处理模块)。
(未完待续…)