python常用标准库总结

争取写完,持续更新

文章目录

一.sys

1.platfrom方法识别操作系统
import sys

print(sys.platform)

win32

2.argv方法获取命令行参数
import sys

print(sys.argv)

[‘D:/Code/python/Draft/1.py’]

3.exit方法退出程序
import sys

for i in range(5):
    print(i)
    if i > 2:
        sys.exit(1)


0
1
2
3

4.path方法获取模块搜索路径
import sys

for path in sys.path:
    print(path)

D:\Develop\python
C:\Users\yh\AppData\Roaming\Python\Python39\site-packages
D:\Develop\python\lib\site-packages
D:\Develop\python\lib\site-packages\django-3.0.11-py3.9.egg
D:\Develop\python\lib\site-packages\asgiref-3.3.1-py3.9.egg
D:\Develop\python\lib\site-packages\pip-20.3.3-py3.9.egg
D:\App\PyCharm 2020.3.2\plugins\python\helpers\pycharm_matplotlib_backend

5.modules方法查找已导入的模块
import sys

print(sys.modules.keys())

D:\Develop\python\python.exe D:/Code/python/Draft/1.py
dict_keys([‘sys’, ‘builtins’, ‘_frozen_importlib’, ‘_imp’, ‘_thread’, ‘_warnings’, ‘_weakref’, ‘_frozen_importlib_external’, ‘nt’, ‘_io’, ‘marshal’, ‘winreg’, ‘time’, ‘zipimport’, ‘_codecs’, ‘codecs’, ‘encodings.aliases’, ‘encodings’, ‘encodings.utf_8’, ‘_signal’, ‘encodings.latin_1’, ‘_abc’, ‘abc’, ‘io’, ‘main’, ‘_stat’, ‘stat’, ‘_collections_abc’, ‘genericpath’, ‘ntpath’, ‘os.path’, ‘os’, ‘_sitebuiltins’, ‘_locale’, ‘_bootlocale’, ‘_codecs_cn’, ‘_multibytecodec’, ‘encodings.gbk’, ‘_heapq’, ‘heapq’, ‘itertools’, ‘keyword’, ‘_operator’, ‘operator’, ‘reprlib’, ‘_collections’, ‘collections’, ‘types’, ‘_functools’, ‘functools’, ‘enum’, ‘_sre’, ‘sre_constants’, ‘sre_parse’, ‘sre_compile’, ‘copyreg’, ‘re’, ‘token’, ‘tokenize’, ‘linecache’, ‘traceback’, ‘sitecustomize’, ‘site’])

Process finished with exit code 0

二.os

1.dirname方法获取当前路径
import os

print(os.path.dirname(__file__))

D:\Code\python\Draft

2.getcwd方法获取当前路径,chdir方法切换路径
import os

print(os.getcwd())
os.chdir("D:\\")
print(os.getcwd())

D:\Code\python\Draft
D:\

3.rename方法可以重命名文件
import os

os.rename("a.txt", "b.txt")

4.exits方法可以查看文件是否存在
import os

print(os.path.exists('a.txt'))

False

5.isfile方法判断是否是一个文件
import os

print(os.path.isfile('b.txt'))

True

6.isdir方法判断路径是否是一个目录
import os

print(os.path.isdir("c:\\"))

True

7.environ方法获取系统变量
import os

for k, v in os.environ.items():
    print(k, "=>", v)

ALLUSERSPROFILE => C:\ProgramData
APPDATA => C:\Users\yh\AppData\Roaming
COMMONPROGRAMFILES => C:\Program Files\Common Files
COMMONPROGRAMFILES(X86) => C:\Program Files (x86)\Common Files
COMMONPROGRAMW6432 => C:\Program Files\Common Files
COMPUTERNAME => LAPTOP-J8VS29QD
COMSPEC => C:\WINDOWS\system32\cmd.exe
DRIVERDATA => C:\Windows\System32\Drivers\DriverData
FPS_BROWSER_APP_PROFILE_STRING => Internet Explorer
FPS_BROWSER_USER_PROFILE_STRING => Default
HOMEDRIVE => C:
HOMEPATH => \Users\yh
IDEA_INITIAL_DIRECTORY => C:\Users\yh\Desktop
LOCALAPPDATA => C:\Users\yh\AppData\Local
LOGONSERVER => \LAPTOP-J8VS29QD
NUMBER_OF_PROCESSORS => 12
ONEDRIVE => C:\Users\yh\OneDrive
ONEDRIVECONSUMER => C:\Users\yh\OneDrive
OS => Windows_NT
PATH => D:\App\VMware\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files (x86)\Intel\Intel® Management Engine Components\DAL;C:\Program Files\Intel\Intel® Management Engine Components\DAL;C:\Program Files\Intel\WiFi\bin;C:\Program Files\Common Files\Intel\WirelessCommon;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;D:\App\Git\cmd;D:\App\Xshell;D:\App\Node;D:\Develop\jdk\bin;D:\Develop\mingw64\bin;D:\Develop\python\Lib\site-packages\Django-3.0.11-py3.9.egg\django;D:\Develop\python\Scripts;D:\Develop\python\Scripts;D:\Develop\python;C:\Users\yh\AppData\Local\Microsoft\WindowsApps;;D:\App\Microsoft VS Code\bin;C:\Users\yh\AppData\Roaming\npm;D:\App\PyCharm 2020.3.2\bin;
PATHEXT => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE => AMD64
PROCESSOR_IDENTIFIER => Intel64 Family 6 Model 158 Stepping 13, GenuineIntel
PROCESSOR_LEVEL => 6
PROCESSOR_REVISION => 9e0d
PROGRAMDATA => C:\ProgramData
PROGRAMFILES => C:\Program Files
PROGRAMFILES(X86) => C:\Program Files (x86)
PROGRAMW6432 => C:\Program Files
PSMODULEPATH => C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
PUBLIC => C:\Users\Public
PYCHARM => D:\App\PyCharm 2020.3.2\bin;
PYCHARM_DISPLAY_PORT => 63342
PYCHARM_HOSTED => 1
PYTHONIOENCODING => UTF-8
PYTHONPATH => D:\Code\python;D:\Code\python\Stdent;D:\App\PyCharm 2020.3.2\plugins\python\helpers\pycharm_matplotlib_backend;D:\App\PyCharm 2020.3.2\plugins\python\helpers\pycharm_display
PYTHONUNBUFFERED => 1
SESSIONNAME => Console
SYSTEMDRIVE => C:
SYSTEMROOT => C:\WINDOWS
TEMP => C:\Users\yh\AppData\Local\Temp
TMP => C:\Users\yh\AppData\Local\Temp
USERDOMAIN => LAPTOP-J8VS29QD
USERDOMAIN_ROAMINGPROFILE => LAPTOP-J8VS29QD
USERNAME => yh
USERPROFILE => C:\Users\yh
WINDIR => C:\WINDOWS

8.mkdir方法创建单层目录
9.mkdirs方法创建多层目录

三.math

1.常量圆周率和自然常数e
import math

print(math.pi)
print(math.e)

3.141592653589793
2.718281828459045

2.ceil函数向上取整,floor函数向下取整
import math

print(math.ceil(math.pi))
print(math.floor(math.pi))

4
3

3.pow函数为指数运算
import math

print(math.pow(2, 3))

8.0

4.log函数为对数运算,默认底数为e,第二个参数可以设置底数
import math

print(math.log(3))
print(math.log(100, 10))

1.0986122886681098
2.0

5.sqrt函数为平方根计算
import math

print(math.sqrt(4))

2.0

6.三角函数计算
import math

print(math.sin(1))
print(math.cos(math.pi))

0.8414709848078965
-1.0

7.角度与弧度转化
import math

print(math.degrees(math.pi))
print(math.radians(90))

180.0
1.5707963267948966

四.random

1.random方法用于产生0到1之间的随机浮点数
import random

print(random.random())

0.6666132029039157

2.randint方法产生指定区间的随机数
import random

print(random.randint(1, 100))

58

3.choice方法获取序列中的一个随机数
import random

a = (1, 5, 8, 9, 6, 7, 4)
print(random.choice(a))

1

4.shuffle方法将序列打乱
import random

a = [1, 5, 8, 9, 6, 7, 4]
random.shuffle(a)
print(a)

[7, 1, 9, 6, 4, 5, 8]

五.time

1.time函数用于返回当前的时间戳(格林尼治时间起至现在的总秒数)
import time

now = time.time()
print(now)

1611303060.773287

2.localtime函数用于将时间戳格式转化为本地时间,返回(struct_time)对象
import time

now = time.localtime()
print(now)

time.struct_time(tm_year=2021, tm_mon=1, tm_mday=22, tm_hour=16, tm_min=14, tm_sec=30, tm_wday=4, tm_yday=22, tm_isdst=0)

3.mktime函数接收struct_time返回用秒数表示时间的浮点数
import time

now = time.localtime()
print(now)
s = time.mktime(now)
print(s)

time.struct_time(tm_year=2021, tm_mon=1, tm_mday=22, tm_hour=16, tm_min=21, tm_sec=1, tm_wday=4, tm_yday=22, tm_isdst=0)
1611303661.0

4.gmtime函数可以将时间戳转化为0时区的struct_time
import time

now = time.time()
print(now)
s = time.gmtime(now)
print(s)

1611303823.960081
time.struct_time(tm_year=2021, tm_mon=1, tm_mday=22, tm_hour=8, tm_min=23, tm_sec=43, tm_wday=4, tm_yday=22, tm_isdst=0)

5.asctime函数可以接收struct_time返回可读的时间形式
import time

now = time.time()
print(now)
s = time.gmtime(now)
print(s)
new = time.asctime(s)
print(new)

1611303959.5288363
time.struct_time(tm_year=2021, tm_mon=1, tm_mday=22, tm_hour=8, tm_min=25, tm_sec=59, tm_wday=4, tm_yday=22, tm_isdst=0)
Fri Jan 22 08:25:59 2021

6.ctime函数可以把时间戳转化为可读形式
import time

now = time.time()
print(now)
s = time.ctime(now)
print(s)

1611304057.0304146
Fri Jan 22 16:27:37 2021

7.sleep函数推迟调用线程的运行,参数为秒
import time

print("start:", time.ctime())
time.sleep(9)
print("end:", time.ctime())

start: Fri Jan 22 16:29:58 2021
end: Fri Jan 22 16:30:07 2021

8.strftime函数接收时间元组,返回可读的当地时间
9.strptime函数可以将时间字符解析为时间元组

六.datetime

1.date对象
import datetime

print(datetime.MAXYEAR)  # 支持的最大年份
print(datetime.MINYEAR)  # 支持的最小年份
print(datetime.date.today())  # today返回当天日期
print(datetime.date.today().weekday())  # weekday放回当天的星期
print(datetime.date.today().isoformat())  # 返回IOS格式

9999
1
2021-01-22
4
2021-01-22

2.time对象
import datetime

print(datetime.time())  # 默认时间
print(datetime.time.max)  # 支持的最大时间
print(datetime.time.min)  # 支持的最小时间


00:00:00
23:59:59.999999
00:00:00

3.datetime对象

datetime=date+time,同时返回日期和时间

import datetime

today = datetime.datetime.today()
print(today)
print(datetime.datetime.now())  # 与today用法相同
print(datetime.datetime.utcnow())  # 0时区时间
now = datetime.datetime.now()
print(now.date())  # date对象返回日期
print(now.time())  # time对象返回时间

2021-01-22 18:22:42.380595
2021-01-22 18:22:42.382589
2021-01-22 10:22:42.382589
2021-01-22
18:22:42.382589

4.timedelta对象

表示时间差

import datetime

dt1 = datetime.datetime.now()
dt2 = datetime.timedelta(weeks=2) + dt1
print(dt1)
print(dt2)
print(dt1 - dt2)

2021-01-22 18:34:31.429461
2021-02-05 18:34:31.429461
-14 days, 0:00:00

5.tzinfo对象

七.calendar

1.calendar.isleap用于判断闰年
import calendar

print(calendar.isleap(2000))
print(calendar.isleap(2018))

True
False

2.canlender.leapdays用于返回两个年份之间闰年的总数
import calendar

print(calendar.leapdays(1900,2000))

24

3.canlender.month方法用于制作日历

四个参数:theyear,themonth,w(字符间距),l(行间距)

import calendar

print(calendar.month(2021,1))

在这里插入图片描述

4.calendar.monthcalender方法返回一个单层嵌套列表,每个列表里面装载一个星期
import calendar

print(calendar.monthcalendar(2021,1))

[[0, 0, 0, 0, 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]]

5.calendar.monthrange方法返回两个整数组成的元组,第一个数表示该月的第一天是星期几,第二个数表示改月的天数
import calendar

print(calendar.monthrange(2021,1))

(4, 31)

6.calendar.weekday方法返回给定日期的星期码
import calendar 

print(calendar.weekday(2021,1,1))

4

7.calendar.calendar返回整年月历
import calendar 

print(calendar.calendar(2021))

在这里插入图片描述

八.smtplib+email

1.smtp.sendmail(sender,recever,message.as_string())方法用于发送邮件,参数分别为邮件发送者地址,接收者地址,发送方式(一般使用字符串)
2.Header方法用于构造message对象
3.MIMEText用于构造邮件内容
4.smtp.login(sender,password)方法用登录
from email import message
from email import header
import smtplib
from email.mime.text import MIMEText
from email.header import Header

sender = "10791894@qq.com"
password = "邮箱授权码"
recever = ["10791894@qq.com", ]
message = MIMEText("邮件内容", "plain", "utf-8")
message["From"] = Header("发件人显示的名字", "utf-8")
message["To"] = Header("yh", "utf-8")
message["Subject"] = "text"
try:
    smtp = smtplib.SMTP_SSL("smtp.qq.com")
    smtp.login(sender, password)
    smtp.sendmail(sender, recever, message.as_string())
    print("邮件已经发送")
except smtplib.SMTPException as e:
    print("出错", e)


邮件已经发送
在这里插入图片描述

5.MIMEText的第二个参数改成"html"可以发送html格式的电子邮件
from email import message
from email import header
import smtplib
from email.mime.text import MIMEText
from email.header import Header

sender = "10791894@qq.com"
password = "邮箱授权码"
recever = ["10791894@qq.com", ]
mail_html = """
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
	</head>
	<body>
		<a href="http://www.baidu.com">百度一下</a>
	</body>
</html>

"""
message = MIMEText(mail_html, "html", "utf-8")
message["From"] = Header("发件人显示的名字", "utf-8")
message["To"] = Header("yh", "utf-8")
message["Subject"] = "text"
try:
    smtp = smtplib.SMTP_SSL("smtp.qq.com")
    smtp.login(sender, password)
    smtp.sendmail(sender, recever, message.as_string())
    print("邮件已经发送")
except smtplib.SMTPException as e:
    print("出错", e)


"""
message=MIMEText(mail_html,"html","utf-8")
message["From"]=Header("发件人显示的名字","utf-8")
message["To"]=Header("yh","utf-8")
message["Subject"]="text"
try:
    smtp=smtplib.SMTP_SSL("smtp.qq.com")
    smtp.login(sender,password)
    smtp.sendmail(sender,recever,message.as_string())
    print("邮件已经发送")
except smtplib.SMTPException as e:
    print("出错",e)
    

邮件已经发送在这里插入图片描述

6.MIMEMultipart对象,attach方法可以添加附件
from email import message
from email import header
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart

sender = "10791894@qq.com"
password = "邮箱授权码"
recever = ["10791894@qq.com", ]
mail_html = """
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
	</head>
	<body>
		<a href="http://www.baidu.com">百度一下</a>
	</body>
</html>

"""
message = MIMEMultipart()  # 指定消息使用复合型
message["From"] = Header("发件人显示的名字", "utf-8")
message["To"] = Header("yh", "utf-8")
message["Subject"] = "text"
f = open("test.txt", "w", encoding="utf-8")
f.write("test")
f.close()
message.attach(MIMEText(mail_html, "html", "utf-8"))
attach_file = MIMEText(open("test.txt", encoding="utf-8").read(), "base64", "utf-8")
attach_file["Content-Disposition"] = 'attachment;filename="mail.py"'
message.attach(attach_file)
try:
    smtp = smtplib.SMTP_SSL("smtp.qq.com")
    smtp.login(sender, password)
    smtp.sendmail(sender, recever, message.as_string())
    print("邮件已经发送")
except smtplib.SMTPException as e:
    print("出错", e)

邮件已经发送
在这里插入图片描述

九.IO

1.StringIO对象可以直接写入文件,操作对象为str
2.BytesIO对象实现在内存中读取Bytes

十.re

1.compile函数用于生成正则对象
import re

pattern = re.compile(r'\w+')  # 可以用pattern对象进行正则匹配

2.match函数用于查找字符串指定位置
import re

pattern = re.compile(r'\d+')  # 可以用pattern对象进行正则匹配
m1 = pattern.match('noe123')
print(m1)  # 返回none
m2 = pattern.match('one123', 3, 6)  # 匹配从位置3到位置6的字符
print(m2)  # 返回match对象
print(m2.group())

None
<re.Match object; span=(3, 6), match=‘123’>
123

3.search函数用于查找字符串指定位置,相比match方法,search函数只需字符串包含匹配正则匹配的子串就认为匹配
import re

pattern = re.compile(r'\d+')  # 可以用pattern对象进行正则匹配
m1 = pattern.search('noe123')
print(m1)  # 返回对象
print(m1.group())

<re.Match object; span=(3, 6), match=‘123’>
123

4.findall方法是完全匹配,match和search是一次匹配,只有找到一个结果就返回
import re

pattern = re.compile(r'\d{2}')  # 可以用pattern对象进行正则匹配
m1 = pattern.findall('noe1235556')
print(m1)  # 返回none


[‘12’, ‘35’, ‘55’]

5.spilt方法可以用正则表达式规则分割字符串
import re

pattern = re.compile(r'\d{2}')  # 可以用pattern对象进行正则匹配
m1 = pattern.split('noe1235556')
print(m1)  # 返回none

[‘noe’, ‘’, ‘’, ‘6’]

6.sub方法可以用正则表达式规则替换字符串
import re

pattern = re.compile(r'\d{2}')  # 可以用pattern对象进行正则匹配
m1 = pattern.sub('99', 'noe1235556')
print(m1)  # 返回none

noe9999996

十一.requests

这里使用请求测试接口http://httpbin.org/get

1.get
import requests

r = requests.get('http://httpbin.org/get')
print(r.text)

{
“args”: {},
“headers”: {
“Accept”: “/”,
“Accept-Encoding”: “gzip, deflate”,
“Host”: “httpbin.org”,
“User-Agent”: “python-requests/2.25.1”,
“X-Amzn-Trace-Id”: “Root=***********”
},
“origin”: “**********”,
“url”: “http://httpbin.org/get”
}

2.post
import requests

r = requests.post('http://httpbin.org/post', data={'key': 'value'})
print(r.text)

{
“args”: {},
“data”: “”,
“files”: {},
“form”: {
“key”: “value”
},
“headers”: {
“Accept”: “/”,
“Accept-Encoding”: “gzip, deflate”,
“Content-Length”: “9”,
“Content-Type”: “application/x-www-form-urlencoded”,
“Host”: “httpbin.org”,
“User-Agent”: “python-requests/2.25.1”,
“X-Amzn-Trace-Id”: “Root=******”
},
“json”: null,
“origin”: “***************”,
“url”: “http://httpbin.org/post”
}

十二.pickle

1.pickle.dumps方法可以把对象序列化成bytes
import pickle


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


student1 = Student('YH', 18)
print(pickle.dumps(student1))

序列化结果:

b’\x80\x04\x954\x00\x00\x00\x00\x00\x00\x00\x8c\x08__main__\x94\x8c\x07Student\x94\x93\x94)\x81\x94}\x94(\x8c\x04name\x94\x8c\x02YH\x94\x8c\x03age\x94K\x12ub.’

2.pickle.dump方法可以把对象序列化,然后直接写入文件中。
import pickle


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


student1 = Student('YH', 18)
print(pickle.dumps(student1))
with open('test.data', 'wb') as f:
    pickle.dump(student1, f)

写入结果
在这里插入图片描述
是一个二进制文件,文本框打开会乱码

��4

这时候就已经把序列化的内容保存到文件中了。

3.pickle.loads方法将序列化内容反序列化
import pickle


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


# student1=Student('YH',18)
# print(pickle.dumps(student1))
# with open('test.data','wb') as f:
#     pickle.dump(student1,f)
f = open('test.data', 'rb')
data = f.read()  # 这里的data仍然是序列化内容
student1 = pickle.loads(data)
f.close()
print(student1.name, student1.age)

运行结果
在这里插入图片描述
从这里看出文件中的序列化内容已经被正确读取。

4.注意

pickle的序列化和反序列化操作只能用于python而不能被其他语言读取,并且不同版本的python之间也可能存在兼容性问题。

十三.hashlib

1.md5加密
import hashlib


def md5(content):
    return hashlib.md5(content.encode()).hexdigest()


message = '东北大学'
print('一次加密:', md5(message))
print('二次加密:', md5(md5(message)))

一次加密: 5cd4f88d13c3119a7fe6171be680cc74
二次加密: 25ed8c88d5f7e5739747a86c8ce22011

2.SHA加密
import hashlib


def sha_(content):
    return hashlib.sha1(content.encode()).hexdigest()


message = '东北大学'
print('一次加密:', sha_(message))
print('二次加密:', sha_(sha_(message)))

一次加密: b44c0e7b65c87666fadc6428545dc0dc5d2ac237
二次加密: 79beea275a499f259d6f69d5d2f37301977d1d26

  • 54
    点赞
  • 375
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 20
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Henrik-Yao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值