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之间包括118 中任意一个整数
print(random.choice([1, 2, 3]))  # 123这几个数字里面任意一个
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:[2413]

# 使用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)




posted @   卡卡发  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示