python 06-标准库:random、string、webbrowser、email、sys、subprocess模块
(1)random、string模块
import random
import string
print(random.random()) # 任意-个float数字
print(random.randint(1, 10)) # 1-10之间包括1和18 中任意一个整数
print(random.choice([1, 2, 3])) # 1,2,3这几个数字里面任意一个
print(random.choices([1, 2, 3], k=2)) # 输出任意两个数字堆 eg:[3,2]或者[3,3]
print(random.choices("ghvbruwin", k=3)) # eg:['r','w','n']或者['b','u','b']
# "".join():将序列中的元素以指定的字符连接生成一个新的字符串
print(",".join(random.choices("ghvbruwin", k=3))) # eg:n,n,i
numbers = [1, 2, 3, 4]
random.shuffle(numbers) # 打乱顺序
print(numbers) # eg:[2,4,1,3]
# 使用string模块实现上述功能
print(",".join(random.choices(string.ascii_letters+string.digits, k=3)))
# eg: 6,g,r 或者 f,I,r
(2)webbrowser模块
import webbrowser
print("Deployment completed")
webbrowser.open("https://www.baidu.com") # 运行后 会帮我们打开浏览器 访问该网址
(3)email模块 发邮件
- 开启对应的邮箱服务:
- 图片地址:
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
from email.mime.image import MIMEImage
from pathlib import Path
message = MIMEMultipart()
# Mail from address must be same as authorization user
message["from"] = "179xxxxxxx@qq.com" #写可用的邮箱
message["to"] = "128xxxxxxx@qq.com" #写可用的邮箱
message["subject"] = "This is a test email"
message.attach(MIMEText("This is body section"))
message.attach(MIMEImage(Path("pic.jpg").read_bytes(), name="1.jpg"))
# 图片路径也可写成绝对路径,这里是相对路径
with smtplib.SMTP(host="smtp.qq.com", port=587) as smtp:
smtp.ehlo() # 向服务器发送 EHLO 消息,以获取服务器支持
smtp.starttls() # 启动 TLS 加密,保护客户端和服务器之间的通信安全
smtp.ehlo() # 再次发送 EHLO 消息,以确保使用了 TLS
# 登录到 SMTP 服务器,第二个参数填写授权码
smtp.login("179xxxxx@qq.com", "写自己的授权码")
smtp.send_message(message)
print("sent...")
😄在body中使用html代码:
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
from email.mime.image import MIMEImage
from pathlib import Path
from string import Template
template = Template(Path("template.html").read_text())
message = MIMEMultipart()
message["from"] = "179xxxxxxx@qq.com"
message["to"] = "128xxxxxxx@qq.com"
message["subject"] = "This is a test email"
body = template.substitute({"name": "carol"})
message.attach(MIMEText(body, "html"))
message.attach(MIMEImage(Path("pic.jpg").read_bytes(), name="1.jpg"))
with smtplib.SMTP(host="smtp.qq.com", port=587) as smtp:
smtp.ehlo()
smtp.starttls()
smtp.ehlo()
smtp.login("179xxxxx@qq.com", "写自己的授权码")
smtp.send_message(message)
print("sent...")
- template.html:
<!DOCTYPE html>
<html lang="en">
<body>
Hi $name,this is a test email
</body>
</html>
(4)sys模块
-
Access Arguments: The first element (sys.argv[0]) is the name of the script being executed, and the subsequent elements (sys.argv[1], sys.argv[2], etc.) are the additional arguments provided.
-
访问参数:第一个元素(sys.argv[0])是正在执行的脚本的名称,随后元素(sys.argv[1], sys.argv[2]等)是提供的附加参数
import sys
print(sys.argv)
# #控制台输入python app.py -a -b -c,则输出['app.py', '-a', '-b', '-c']
import sys
# 通过 sys.argv 列表来访问命令行参数
if len(sys.argv) == 1:
print("USAGE: python app.py <password>")
else:
password = sys.argv[1]
print("Password:", password)
(5)subprocess模块
-
subprocess模块允许Python程序执行外部命令、运行其他编程语言编写的应用程序,并与它们的输入/输出/错误管道进行交互。
-
subprocess模块旨在替代旧的os.system、os.spawn*等模块,提供更复杂的功能,如超时控制、I/O管道通信等。
:simle:执行外部命令
import subprocess
# subprocess.run()函数执行命令并等待其完成,
# 该函数返回一个CompletedProcess对象,包含执行结果的各种信息
# 执行外部命令 'dir'(列出当前目录下的文件和文件夹)
result = subprocess.run("dir", capture_output=True, text=True)
# capture_output参数指定了要捕获命令的输出,如果设置为True,它会捕获stdout和stderr
# text参数指定了输出应该以文本形式(而不是字节形式)返回
print("args:", result.args)
print("Return Code:", result.returncode) # Check if the command was successful
print("Standard Output:", result.stdout) # Output from the command 命令运行的输出结果
print("Standard Error:", result.stderr) # Any error messages
:simle:运行其他文件
创建一个新文件:
import subprocess
result = subprocess.run(["python", "other.py"], capture_output=True, text=True)
print("args:", result.args)
print("Return Code:", result.returncode)
print("Standard Output:", result.stdout)
print("Standard Error:", result.stderr)
:simle:check属性
import subprocess
# check参数设为true 则当returncode==1时(即出错时)会自动raiseError
result = subprocess.run(["false"], capture_output=True, text=True, check=True)
# check: If set to True, it raises a CalledProcessError if the command returns a non-zero exit status.
print("args:", result.args)
print("Return Code:", result.returncode)
print("Standard Output:", result.stdout)
print("Standard Error:", result.stderr)
分类:
研_需 / python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)