python常用的内置模块有哪些?这20个模块算是高频使用的吗?(上)

liftword6个月前 (12-08)技术文章56

1.os

1.1 作用

主要是和操作系统相关的一个模块,如可以进行文件/目录的创建、删除等

1.2 导入

Bash
import os

1.3 常用方法及说明

常用方法

说明

os.getcwd()

获取当前路径

os.chdir(path)

改变当前工作目录

os.listdir(path)

列出指定路径下的所有文件和子目录,以列表形式展示

os.mkdir('dirname')

创建文件夹

os.makedirs('dirname1/dirname2')

可以生成多层递归目录

os.removedirs('dirname')

若目录为空,则删除,并递归到上一层目录,若也为空,则删除。

os.rmdir('dirname')

删除空目录,若目录不为空则报错

os.remove()

删除一个文件

os.rename('oldname','newname')

重命名文件/目录

os.stat('path/filename'')

获取文件/目录信息

os.sep

输入操作系统特定的路径分隔符,win下为'\',Linux为'/'

os.name

获取当前的平台,win为'nt' ,Linux为'posix'

os.system('command')

运行shell命令

os.environ

获取系统环境变量

os.path.abspath(path)

返回path的绝对路径

os.path.split(path)

将path分割成目录和文件名的元组

os.path.splittext(path)

分割路径,返回路径名和文件扩展名的元祖

os.path.dirname(path)

返回path的上一层目录

os.path.basename(path)

返回path中最后的文件名

os.path.exist(path)

若path存在返回True,否则返回False

os.path.isfile(path)

若path是一个文件则返回Ture,否则返回False

os.path.isdir(path)

若path是一个目录则返回Ture,否则返回False

os.path.isabs(path)

若path是绝对路径则返回Ture,否则返回False

os.path.join(path1[, path2[, ...]])

把目录和文件名合成一个路径

os.path.getsize(path)

返回文件大小,如果文件不存在就报错

os.path.getmtime(path)

返回最近文件修改时间

os.path.getctime(path)

返回文件path创建时间

os.path.realpath(path)

返回path的真实路径

os.path.normpath(path)

返回path的真实路径

1.4 示例

Bash
import os


print(os.getcwd())                 #获取当前路径 ,输出:E:\project\demo_mod
print(os.listdir())                #列出当前目录下的所有文件和目录 ,输出:['.idea', 'abc.txt', 'demo_os.py']
os.mkdir("aaa")                     #创建文件夹aaa
os.rmdir("aaa")                     #删除空目录aaa
os.makedirs("abc/bcd")              #创建多层文件夹abc/bcd
os.removedirs("abc/bcd")            #删除多层多文件abc/bcd
print(os.stat('abc.txt'))           # 输出 :os.stat_result(st_mode=33206, st_ino=562949953424572, st_dev


print(os.path.abspath("."))                             # 返回当前路径的绝对路径 ,输出 :E:\project\demo_mod
os.path.exists(r"E:\project\demo01")                    # 判断path是否存在 ,输出:False
os.path.isfile("abc.txt")                               # 判断abc.txt是文件 ,输出:True
print(os.path.split(r"E:\project\demo_mod\abc.txt"))    # ('E:\\project\\demo_mod', 'abc.txt')
print(os.path.dirname(r"E:\project\demo_mod\abc.txt"))  # E:\project\demo_mod

2.sys

2.1 作用

Bash
针对python解释器相关的变量和方法

2.2 导入

Bash
import sys

2.3 常用方法及说明

属性/方法

说明

sys.argv

命令行参数,第一个参数为脚本名字

sys.modules

所有加载到内存的模块都放在modules

sys.path

返回查找模块的搜索路径,以列表返回

sys.platform

返回操作系统平台名词

sys.version

返回python解释器程序的版本信息

sys.exit()

退出程序

2.4 示例

Bash
import sys


print("获取默认第一个参数:",sys.argv)
print("获取系统路径:",sys.path)
print("获取当前平台:",sys.platform)
print("获取当前版本:",sys.version)

#返回:
获取默认第一个参数: ['E:/project/demo_mod/demo02_sys.py']
获取系统路径: ['E:\\project\\demo_mod', 'E:\\project\\demo_mod', 'C:\\python36\\python36.zip', 'C:\\python36\\DLLs', 'C:\\python36\\lib', 'C:\\python36', 'C:\\python36\\lib\\site-packages']
获取当前平台: win32
获取当前版本: 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)

3.time

3.1 作用

Bash
和时间相关的模块

3.2 导入

Bash
import time

3.3 常用方法及说明

方法

说明

time.time()

获取当前时间戳

time.sleep(n)

当前线程停止运行n秒

time.asctime()

返回当前时间,格式是西欧格式

time.ctime()

返回当前时间,格式是西欧格式

time.localtime()

返回当前时间对象

time.struct_time()

构造一个对应的事件对象

time.strftime()

将一个时间对象格式化为特定的字符串输出

time.strptime()

照格式化字符把一个格式化时间字符串转成元组。

3.4 示例

Bash
import time

print("获取当前时间戳:",time.time())
print("返回当前时间,西欧格式:",time.ctime())
print("返回当前时间对象:",time.localtime())

time.sleep(2)       #睡眠2s
print("返回格式化后的时间:",time.strftime("%Y-%m-%d %X", time.localtime()))
print("将格式化的时间转化成时间对象,元祖形式:",time.strptime('2010-8-11 7:26:16', '%Y-%m-%d %X'))

#返回:
获取当前时间戳: 1634373068.0492582
返回当前时间,西欧格式: Sat Oct 16 16:31:08 2021
返回当前时间对象: time.struct_time(tm_year=2021, tm_mon=10, tm_mday=16, tm_hour=16, tm_min=31, tm_sec=8, tm_wday=5, tm_yday=289, tm_isdst=0)
返回格式化后的时间: 2021-10-16 16:31:10
将格式化的时间转化成时间对象,元祖形式: time.struct_time(tm_year=2010, tm_mon=8, tm_mday=11, tm_hour=7, tm_min=26, tm_sec=16, tm_wday=2, tm_yday=223, tm_isdst=-1)

4.datetime

4.1 作用

Bash
关于时间和日期的模块 ,这里面有几个常用的类,包括:
  • date : 日期类
  • time : 时间类
  • datetime : 日期和时间的类 ,相当于前面的两个类
  • datedelta : 时间间隔

4.2 导入

4.3 常用方法及说明

Bash
from datetime import date
d = date(date(2020,11,20))

下面表格中的d就是上面的日期对象

属性/方法

说明

date.max

返回最大的日期对象

date.min

返回最小的日期对象

d.year

返回2020

d.month

返回11

d.day

返回20

d.replace(year,month,day)

生成并返回一个新的日期对象,原日期对象不变

d.timetuple()

返回日期对应的time.struct_time对象

d.toordinal()

返回日期自0001-01-01开始的第多少天

d.weekday()

返回日期是星期几,[0, 6],0表示星期一

d.isoweekday()

返回日期是星期几,[1, 7], 1表示星期一

d.isocalendar()

返回一个元组,格式为:(year, weekday, isoweekday)

d.isoformat()

返回‘YYYY-MM-DD'格式的日期字符串

d.strftime(format)

返回指定格式的日期字符串,与time模块的strftime(forma t, struct_time)功能相同

Bash
from datetime import time
t = time(20,51,32)

下面表格中的t就是上面的时间对象

属性/方法

说明

t.hour

返回20,取值范围[0,23]

t.minute

返回51,取值范围在[0,59]

t.second

返32,取值范围在[0,59]

t.microsecond

微秒

t.tzinfo

返回传递给time构造方法的tzinfo对象,如果该参数未给出,则返回None

t.replace(hour[, minute[, second[, microsecond[, tzinfo]]]])

生成并返回一个新的时间对象,原时间对象不变

t.isoformat()

返回一个‘HH:MM:SS.%f'格式的时间字符串

t.strftime()

返回指定格式的时间字符串,与time模块的strftime(format, struct_time)功能相同

Bash
from datetime import datetime
dt = datetime(2020,09,22,10,35,28,322)

下面表格中的dt就是上面的日期时间对象

属性/方法

说明

dt.year

返回2020

dt.month

返回09

dt.day

返回22

dt.hour

返回10

dt.minute

返回35

dt.second

返回28

dt.microsecond

返回322

datetime.today()

返回一个表示当前本期日期时间的datetime对象

datetime.now([tz])

返回指定时区日期时间的datetime对象,如果不指定tz参数则结果同上

datetime.utcnow()

返回当前utc日期时间的datetime对象

datetime.fromtimestamp(timestamp[, tz])

根据指定的时间戳创建一个datetime对象

datetime.utcfromtimestamp(timestamp)

根据指定的时间戳创建一个datetime对象

datetime.combine(date, time)

把指定的date和time对象整合成一个datetime对象

datetime.strptime(date_str, format)

将时间字符串转换为datetime对象

datetime.timedelta()

返回一个时间间隔对象,可以直接与datetime.datetime对象做加减操作

4.4 示例

date示例

Bash
from datetime import date

now = date(2021, 10, 16)
tomorrow = now.replace(day = 17)

print('今天日期:', date.today())
print('今天日期:', now,)
print('明天日期:', tomorrow)
print("日期的元祖", now.timetuple())
print('返回星期几,0代表星期一:', now.weekday())
print('返回星期几,1代表星期一:', now.isoweekday())
print( '返回一个元祖', now.isocalendar())
print( '返回日期字符串:', now.isoformat())
print( '返回格式化的日期:', now.strftime("%Y-%m-%d"))


#输出:
今天日期: 2021-10-16
今天日期: 2021-10-16
明天日期: 2021-10-17
日期的元祖 time.struct_time(tm_year=2021, tm_mon=10, tm_mday=16, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=289, tm_isdst=-1)
返回星期几,0代表星期一: 5
返回星期几,1代表星期一: 6
返回一个元祖 (2021, 41, 6)
返回日期字符串: 2021-10-16
返回格式化的日期: 2021-10-16

time示例

Bash
from datetime import time

t1 = time(17,25,15)
print("显示小时:",t1.hour)
print("显示分钟:",t1.minute)
print("显示秒:",t1.second)
print("显示微秒:",t1.microsecond)

tm1 = t1.replace(minute=32)
print("替换后时间:",tm1)
print('返回时间字符串:', t1.isoformat())
print('返回格式化后的时间字符串', t1.strftime("%X"))


#输出:
显示小时: 17
显示分钟: 25
显示秒: 15
显示微秒: 0
替换后时间: 17:32:15
返回时间字符串: 17:25:15
返回格式化后的时间字符串 17:25:15

datetime示例

Bash
from datetime import datetime



print('最大时间:', datetime.max)
print('最小时间:', datetime.min)
print('今天时间,精确到微秒:', datetime.today())
print('现在时间,精确到微秒::', datetime.now())
print("格式化日期:",datetime.strftime(datetime.now(),"%y-%m-%d %H:%M:%S"))


#输出 :
最大时间: 9999-12-31 23:59:59.999999
最小时间: 0001-01-01 00:00:00
今天时间,精确到微秒: 2021-10-16 17:41:08.807900
现在时间,精确到微秒:: 2021-10-16 17:41:08.807900
格式化日期: 21-10-16 17:41:08

timedelta示例

Bash
from  datetime import timedelta,datetime
dt = datetime.now()

#日期减一天
dt1 = dt + timedelta(days=-1)       #昨天
dt2 = dt - timedelta(days=1)        #昨天
dt3 = dt + timedelta(days=1)        #明天
delta_obj = dt3-dt
print("当前日期-1:",dt1)
print("当前日期-1:",dt2)
print("当前日期+1:",dt3)
print("相差几天:",delta_obj)


#输出:
当前日期-1: 2021-10-15 17:45:39.574903
当前日期-1: 2021-10-15 17:45:39.574903
当前日期+1: 2021-10-17 17:45:39.574903
相差几天: 1 day, 0:00:00

5.random

5.1 作用

Bash
用于生成随机数

5.2 导入

Bash
import random

5.3 常用方法及说明

方法

说明

random.random()

用于生成一个0~1的随机浮点数

random.uniform(a,b)

用于生成一个指定范围内的随机浮点数

random.randint(a,b)

用于生成一个指定范围内的整数

random.randrange(start,end,step)

从指定范围内,按指定基数递增的集合中 获取一个随机数。

random.choice(sequence)

从序列中获取一个随机数

random.shuffle(x[, random])

用于将一个列表中的元素打乱,即将列表内的元素随机排列。

random.sample(sequence, k)

从指定序列中随机获取指定长度的片断并随机排列。

5.4 示例

Bash
import random


print("生成一个0~1的随机数:",random.random())
print("生成一个指定范围内的随机数:",random.uniform(1,10))
print("生成一个指定范围的随机整数:",random.randint(1,100))
print("生成指定集合,然后随机生成一个数:",random.randrange(1,5,1))
print("从列表中随机拿一个数:",random.choice(['a','b','c','d']))
print("指定的长度中随机排序",random.sample(['a','b','c','d'],3))

lst = [1,3,46,33,'a','b','c','d']
random.shuffle(lst)
print("列表被打乱后随机排序",lst)


#输出:
生成一个0~1的随机数: 0.06636579979518498
生成一个指定范围内的随机数: 7.29403347010388
生成一个指定范围的随机整数: 93
生成指定集合,然后随机生成一个数: 3
从列表中随机拿一个数: c
指定的长度中随机排序 ['d', 'b', 'a']
列表被打乱后随机排序 ['a', 3, 46, 'b', 1, 'c', 33, 'd']

6.subprocess

6.1 作用

Bash
执行系统命令

6.2 导入

Bash
import subprocess

6.3 常用方法及说明

方法

说明

subprocess.call(command)

执行命令,返回状态码

subprocess.run()

执行命令,等待命令执行完成后返回一个包含执行结果的CompletedProcess类的实例。

subprocess.check_call(command)

执行命令,如果执行状态码是0,则返回0,否则抛出异常

subprocess.check_output()

执行命令,如果执行状态码是0,则返回命令执行结果,否则抛出异常

subprocess.getoutput(cmd)

接收字符串格式的命令,执行命令并返回执行结果,其功能类似于os.popen(cmd).read()和commands.getoutput(cmd)。

subprocess.getstatusoutput(cmd)

执行cmd命令,返回一个元组(命令执行状态, 命令执行结果输出),其功能类似于commands.getstatusoutput()。

subprocess.Popen()

可以执行各种命令,以上的那些方法都是基于此类实现的。

6.4 示例

Bash
import subprocess


# 查看当前目录下的文件 ,以下三条命令必须指定shell参数 ,否则会报错
subprocess.run(["dir"],shell=True)
subprocess.run(["java","-version"])
subprocess.call("dir",shell=True)
subprocess.check_call("dir",shell=True)


# 以下两条方法专门就是执行shell命令的 。
subprocess.getoutput("dir")
subprocess.getstatusoutput("dir")

#输出 :以上都可以返回命令执行后的结果

7.hashlib

7.1 作用

Bash
用于加密相关的操作

7.2 导入

Bash
import hashlib

7.3 常用方法及说明

方法

说明

hashlib.md5()

进行md5算法加密

hashlib.sha1()

进行SHA1算法加密

hashlib.sha224()

进行SHA224算法加密

hashlib.sha256()

进行SHA256算法加密

hashlib.sha384()

进行SHA384算法加密

7.4 示例

Bash
import hashlib

m1 = hashlib.md5('hello python'.encode(encoding='utf-8'))  # 构建MD5对象
print(m1.hexdigest())       # 结果为: e5d3024684c9be1dd3f6114ecc8bbdddc


sh224 = hashlib.sha224("hello python".encode('utf-8'))
print(sh224.hexdigest())     

sh256 = hashlib.sha256("hello python".encode('utf-8'))
print(sh256.hexdigest())    

sh384 = hashlib.sha384("hello python".encode('utf-8'))
print(sh384.hexdigest())    


#结果输出:
e53024684c9be1dd3f6114ecc8bbdddc
7f78ad20eff5afc21166e6a5e22962a2819bd28d335ba95ff414b3f5
373a23512f9531ad49ec6ad43ecdda58df01e59d9ec5812d601fd05cc53345d3
eaf44aabb38c34ff948e714b9c3c08f3fed996d74fc9f1225d7368ccb386465df272e55912041921eddf13b51aff833c

8.json

8.1 作用

Bash
编码或解码json对象

8.2 导入

Bash
import json

8.3 常用方法及说明

方法

说明

json.dumps()

将python对象转化成json字符串

json.loads()

将json字符串转化为python对象

json.dump()

将python对象转化成json字符串并存入文件

json.load()

从文件读取字符串转化成python对象

8.4 示例

Bash
import json

# 1.字符串(json) --> 字典
color = '{"1":"red","2":"green","3":"blue","4":"black"}'
color_dict = json.loads(color)
print("color_dict:",color_dict)


# 2.字典 --> json
color_json  = json.dumps(color_dict)
print("color_json:",color_json)


# 3.(json)文件 --> 字典
with open("color.json") as f:
    dt = json.load(f)
print("dt:",dt)

# 4.dict --> (json)文件
with open("color1.json","w") as f1:
    json.dump(dt,f1)                #将python字典数据写入color1.json

    
#输出 :
color_dict: {'1': 'red', '2': 'green', '3': 'blue', '4': 'black'}
color_json: {"1": "red", "2": "green", "3": "blue", "4": "black"}
dt: {'1': 'red', '2': 'green', '3': 'blue', '4': 'black'}

9.pickle

9.1 作用

Bash
用于序列化的模块

9.2 导入

Bash
import pickle

9.3 常用方法及说明

方法

说明

pickle.dumps()

将数据通过特殊的形式转换为只有python语言认识的字符串

pickle.loads()

将pickle数据转换为python的数据结构

pickle.dump()

将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件

pickle.load()

从数据文件中读取数据,并转换为python的数据结构

9.4 示例

Bash
import pickle

# 1.序列化
color = ["red","green","blue","black"]
color_byte = pickle.dumps(color)
print("color_byte:",color_byte)


# 反序列化即字节转列表(python数据类型)
color_obj  = pickle.loads(color_byte)
print("color_obj:",color_obj)


class Person():

    def __init__(self,name,age):
        self.name = name
        self.age = age


p = Person('zhangsan',21)


# 3.持久化到文件
with open("color.txt","wb") as f:
    dt = pickle.dump(p,f)

# 4. 从文件读取数据
with open("color.txt","rb") as f:
    p_data = pickle.load(f)

print(p_data)


#输出 :
color_byte: b'\x80\x03]q\x00(X\x03\x00\x00\x00redq\x01X\x05\x00\x00\x00greenq\x02X\x04\x00\x00\x00blueq\x03X\x05\x00\x00\x00blackq\x04e.'
color_obj: ['red', 'green', 'blue', 'black']
<__main__.Person object at 0x03A4B050>

10.shutil

10.1 作用

Bash
主要用于文件或目录的复制或归档的操作

10.2 导入

Bash
import shutil

10.3 常用方法及说明

方法

说明

shutil.copy('源文件','目标地址')

复制文件

shutil.copy2('源文件','目标地址')

复制文件,暴露元数据

shutil.copyfileobj(open('源文件','r'),open('目标文件','w'))

讲一个文件的内容拷贝到另外一个文件当中

shutil.copyfile('源文件','目标文件')

将一个文件的内容拷贝到另外一个文件中

shutil.copytree('源目录','目标目录')

复制整个目录

shutil.copymode()

拷贝权限

shutil.copystat()

拷贝元数据(状态)

shutil.rmtree()

移除整个目录,无论是否为空

shutil.move('源地址','目标地址')

移动文件或文件夹

shutil.which('命令字符串')

检测命令对应的文件路径

shutil.disk_usage('盘符')

检测磁盘使用信息

shutil.make_archive('目标文件路径','归档文件后缀','需要归档的目录')

归档函数,归档操作

shutil.unpack_archive('归档文件路径','解包目标文件夹')

解包操作

shutil.get_archive_formats()

获取当前系统已注册的归档文件格式(后缀)

shutil.get_unpack_formats()

获取当前系统已经注册的解包文件格式(后缀)

10.4 示例

Bash
import shutil

shutil.copy('abc.txt','bcd.txt')
shutil.copy2('abc.txt','ddd.txt')

# 基于文件流的复制,目标文件必须存在
with open("abc.txt","rb") as f ,open("ddd.txt","wb") as s:
    shutil.copyfileobj(f,s)

shutil.copyfile('abc.txt','acc.txt')        # 目标文件无须存在
shutil.copymode('abc.txt','acc.txt')        # 仅拷贝权限,内容,组,用户均不变,目标文件必须存在


# 文件夹压缩,不可压缩文件
shutil.make_archive("a1","zip","E:\project\demo2801")


# 备注 :以上都直接形成文件

因篇幅有限,故另外一部分放在下一篇文章 。

相关文章

Python:常见的变量和数据类型

在 Python 中,变量和数据类型是非常重要的概念。以下是 Python 中常见的变量和数据类型:整数(int):表示整数值,例如 10、-5 和 0。浮点数(float):表示带有小数部分的数字,...