使用 Python 发送电子邮件(多个示例)

2023-10-22

Python 允许您使用其内置模块自动执行发送电子邮件的任务。这样做可以让您摆脱手动向数千名用户发送电子邮件的繁琐且耗时的任务。

本教程将探讨一些快速、简单的发送电子邮件和使用 Python 内置电子邮件模块的方法。

 

 

检查电子邮件是否存在

通常,您可能想要检查用户输入的电子邮件是否有效或语法不正确。此外,您可能还想检查该电子邮件地址是否确实存在。使用 Python 可以快速完成此操作。

有效的电子邮件地址具有特定的格式。始终存在“@”符号。前缀是@符号之前的部分,后缀是@符号之后的部分。

后缀必须是经过验证的域名。电子邮件地址可以包含数字、字母、句点、破折号和下划线。

如果使用破折号或下划线,则后面需要跟字母或数字。这些是定义正确电子邮件地址的规则。

如果你想检查用户输入的电子邮件地址的语法,Python 的 re 模块会派上用场。 ‘re’是正则表达式的缩写形式。

您可以创建与有效电子邮件的语法相匹配的正则表达式。为此,您需要了解正则表达式的工作原理。下面是一个检查电子邮件地址语法的正则表达式。


import re
valid_regex = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
def check(email):
  if(re.fullmatch(valid_regex, email)):
    print("This is a valid email") 
  else:
    print("This is an invalid email")
email = "correctemail@gmail.com"
check(email)
  

使用 re 模块需要您对正则表达式有深入的了解。

检查电子邮件是否存在的更好方法是使用名为 validate-email-address 的第三方包。您可以使用包管理器(例如 pip)安装此模块。


$ pip install py3-validate-email
  

from validate_email import validate_email
valid_email = validate_email(email_address='example@gmail.com')  

这个包的伟大之处在于它检查电子邮件的语法,并通过模拟实际的电子邮件发送来检查给定的电子邮件地址是否存在。为此,您需要将 check_smtp 标志设置为 true。


from validate_email import validate_email
valid_email = validate_email(email_address='example@gmail.com', check_smtp = True)    
  

 

Python 电子邮件服务器

要使用Python发送电子邮件,您需要设置一个电子邮件服务器第一的。发送电子邮件的最常见方式和行业标准协议是使用 SMTP 协议。

SMTP 是简单邮件传输协议的缩写。电子邮件服务提供商利用 SMTP 服务器和 SMTP 协议来发送或中继消息。

您可以使用 Python 的 smtplib 模块创建自己的 SMTP 电子邮件服务器。该模块允许您发送没有主题行或多媒体的简单消息。

Python 还有一个内置的电子邮件包,允许您随文本消息一起发送其他附件。与 smtplib 模块结合使用时,您可以发送带有附件和主题行的丰富电子邮件。

要使用 smtplib 模块创建电子邮件服务器,首先需要运行 import 语句。


import smtplib  

然后,您可以创建封装 SMTP 连接的 SMTP 实例。您可以设置可选参数主机和端口来指定端口和主机,具体取决于您的特定电子邮件服务提供商。

要设置自动关闭的连接,您需要使用“with”语句。


from smtplib import SMTP
with SMTP(host= "exampledomain.com", port= 587) as smtp:
    smtp.starttls()
    smtp.noop()
  

当您使用 SMTP 时,发起的连接并不安全。这就是为什么您需要使用 starttls() 对其进行加密。

另一种方法是从头开始安全连接,而不是在连接启动后对其进行加密。 SMTP_SSL 实例用于本例。


from smtplib import SMTP
server = "smtp-mail.outlook.com"
port = 587
with smtplib.SMTP_SSL(server, port) as server:
    server.login("example@outlook.com", password="StrongPassword")
  

 

使用 Python 发送电子邮件

设置电子邮件服务器后,您可以将电子邮件转发到有效地址。 sendmail() 函数执行此操作。它要求您指定发件人和收件人的电子邮件地址以及消息。

如果您的 SMTP 服务器需要身份验证才能发送邮件,您需要输入电子邮件帐户的凭据。

您可以将用户名和密码传递给 login() 函数,该函数将执行身份验证。

使用 smtplib 模块时,可以通过两种方式发送电子邮件。它们都确保您的 SMTP 连接是安全且加密的。

 

通过 SMTP 发送电子邮件

如前所述,您可以首先启动未通过 TLS 加密的连接,然后使用 starttls() 对其进行加密。在本例中,将创建 SMTP 类的实例。


import smtplib
import ssl
port = 587  
smtp_server = "smtp-mail.outlook.com"
sender = "sender@outlook.com"
recipient = "receiver@gmail.com"
sender_password = "strongpassword"
message = """
Subject: This is a test message
Sent using Python."""
SSL_context = ssl.create_default_context()
with smtplib.SMTP(smtp_server, port) as server:
    server.starttls(context=SSL_context)
    server.login(sender, sender_password)
    server.sendmail(sender, recipient, message)
  

 

使用 SMTP SSL 发送

发送电子邮件的第二种方法是通过 TLS 启动安全连接。在从连接开始就需要 SSL 的情况下,这是正确的选项。


import smtplib
import ssl
port = 465  
smtp_server = "smtp-mail.outlook.com"
sender = "sender@outlook.com"
recipient = "receiver@gmail.com"
sender_password = "strongpassword"
message = """
Subject: This is a test message
Send using Python."""
SSL_context = ssl.create_default_context()
with smtplib.SMTP_SSL(smtp_server, port, context=SSL_context) as server:
    server.login(sender, sender_password)
    server.sendmail(sender, recipient, message)
  

 

无需 SMTP 服务器即可发送电子邮件

如果您不想设置 SMTP 服务器来发送电子邮件,chilkat 模块将是您的最佳选择。它包含 Chilkat MailMan 类,该类分别负责通过 SMTP 和 POP3 服务器发送和接收电子邮件。

该模块提供了 MxLookup 方法,该方法执行 DNS MX 查找,以使用收件人的电子邮件地址查找邮件服务器。您需要安装 chilkat 模块才能执行此操作。


import sys
import chilkat
mailman = chilkat.CkMailMan()
receiver_address = "example@domain.com"
smtpHost = mailman.mxLookup(receiver_address)
if (mailman.get_LastMethodSuccess() != True):
    print(mailman.lastErrorText())
    sys.exit()
mailman.put_SmtpHost(smtpHost)
mail = chilkat.CkEmail()
mail.put_Subject("A test subject")
mail.put_Body("Hello!")
mail.put_From("")
mail.AddTo("", receiver_address)
success = mailman.SendEmail(mail)
if (success != True):
    print(mailman.lastErrorText())
else:
    print("Sent!")
  

 

电子邮件 MIME 文本

如果您想发送没有主题或强调(粗体、斜体或下划线)的纯文本电子邮件,Python 中的 smtplib 模块足以完成这项工作。

但是,您经常希望使用纯文本在现实场景中添加附件(图像、超链接等)或响应内容。 Python 的内置电子邮件模块在这种情况下会派上用场。

MIME 是多用途互联网邮件扩展的缩写,是一种使用 HTML 与纯文本相结合的电子邮件类型。

它扩展了 SMTP 协议以支持图像、视频、音频和其他附件。 Python 的 email.mime 模块允许您在通过 SMTP 服务器发送电子邮件时包含 HTML 或附件。

为此,您需要通过运行以下语句来导入模块。


from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import smtplib
import ssl
port = 587
server = "smtp-mail.outlook.com"
sender = "example@outlook.com"
recipient = "example@gmail.com"
password = "strongpassword"
msg = MIMEMultipart()       
message = """Hi,
This is a MIME text
"""
msg['From']= sender_email
msg['To']= receiver_email
msg['Subject']="This is a text email for MIME"
msg.attach(MIMEText(message, "plain"))
text = msg.as_string()
SSLcontext = ssl.create_default_context()
with smtplib.SMTP(server, port) as server:
    server.starttls(context=SSLcontext)
    server.login(sender, password)
    server.sendmail(sender, recipient, text) 
  

 

发送 HTML 电子邮件

除了通过 SMTP 服务器发送 MIME 文本之外,email.mime 还可以很好地用于发送 HTML 电子邮件。该过程与上面完全相同,只是 MIMEText() 函数有细微的差别。

由于消息是简单的纯文本,因此您在前面的代码示例中传递了“plain”作为第二个参数。当您想要发送 HTML 文本时,您可以将文本和此参数更改为“html”。


from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import smtplib
import ssl
port = 587
server = "smtp-mail.outlook.com"
sender = "example@outlook.com"
recipient = "example@gmail.com"
password = "strongpassword"
msg = MIMEMultipart()       
html_message = """
<html>
    <body>
        <p>
       This is HTML<br>
       </p>
    </body>
</html>
"""
msg.attach(MIMEText(html_message, "html"))
text = msg.as_string()
SSLcontext = ssl.create_default_context()
with smtplib.SMTP(server, port) as server:
    server.starttls(context=SSLcontext)
    server.login(sender, password)
    server.sendmail(sender, recipient, text) 
  

 

指定抄送和密件抄送

email.mime 模块还允许您在电子邮件中指定抄送和密件抄送收件人。为此,您需要在多部分消息中指定其他标头。


from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import smtplib
import ssl
port = 587
server = "smtp-mail.outlook.com"
sender = "example@outlook.com"
recipient = "example@gmail.com"
password = "strongpassword"
msg = MIMEMultipart()       
message = """
    An email with CC and BCC
"""
msg['From']= sender
msg['To']= recipient
msg['Subject']= "This is TEST"
msg["Bcc"] = recipient
msg["Cc"] = 'example@gmail.com'
msg.attach(MIMEText(message, "plain"))
text = msg.as_string()
SSLcontext = ssl.create_default_context()
with smtplib.SMTP(server, port) as server:
    server.starttls(context=SSLcontext)
    server.login(sender, password)
    server.sendmail(sender, recipient, text)
  

 

发送带有附件的电子邮件

附件以二进制文件的形式通过 SMTP 服务器发送。为此,您需要使用 base64 对附件进行编码,这是一种常见的二进制到文本编码方案,用于将二进制数据编码为 ASCII 字符。

例如,您可以通过使用 MIMEBase 实例将其作为八位字节流读取并使用 Python 电子邮件库中的编码器模块对其进行编码来发送 pdf 文件。


from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib, ssl
from email import encoders
port = 587
server = "smtp-mail.outlook.com"
sender = "example@outlook.com"
recipient = "example@gmail.com"
password = "strongpassword"
msg = MIMEMultipart()       
message = "This email includes an attachment"
msg.attach(MIMEText(message, "plain"))
filename = "example.pdf"
with open(filename, "rb") as pdf:
    attachment = MIMEBase("application", "octet-stream")
    attachment.set_payload(pdf.read())
encoders.encode_base64(attachment)
attachment.add_header(
    "Content-Disposition",
    f"attachment; filename= {filename}",
)
msg.attach(attachment)
SSLcontext = ssl.create_default_context()
with smtplib.SMTP(server, port) as server:
    server.starttls(context=SSLcontext)
    server.login(sender, password)
    server.sendmail(sender, recipient, msg.as_string())
  

 

发送带有内嵌图像的电子邮件

有时您可能希望将图像嵌入 HTML 文本中。为此,您可以将图像转换为 Base64 编码格式并将其发送出去。

幸运的是,Python 有一个库可以帮你做到这一点。您可以导入 base64 库并使用 b64encode() 函数无缝地执行此操作。


from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
import smtplib, ssl, base64
port = 587
server = "smtp-mail.outlook.com"
sender = "sender@outlook.com"
recipient = "receiver@gmail.com"
password = "strongPassword"
msg = MIMEMultipart()       
msg['From']= sender
msg['To']= recipient
msg['Subject']= "My subject"
filename = "example.jpg"
image = base64.b64encode(open(filename, "rb").read())
image_base64 = image.decode()
html_img = """
<html>
    <body>
        <p>
            <img src= "data:image/jpg;base64,{image_base64}">
       </p>
    </body>
</html>
"""
msg.attach(MIMEText(html_img, "html"))
text = msg.as_string()
context = ssl.create_default_context()
with smtplib.SMTP(smtp_server, port) as server:
    server.starttls(context=context)
    server.login(sender, password )
    server.sendmail(sender, recipient, text)
  

 

发送电子邮件至国际化电子邮件地址(非 ASCII)

在电子邮件获得全世界认可之前,它们主要由 ASCII 字符组成,并用RFC 822标准。

如今,电子邮件以更多特定于语言的字符集在国际上发送。要发送国际化电子邮件,您需要使用 email.header 模块,它将非 ASCII 字符编码为符合 RFC 2822 的格式。

如果您的主题或发件人字段包含非 ASCII 字符,您可以使用 Header 类创建 Header 实例并传递字符串编码所用的字符集。

相应的decode_header()函数将编码字符串解码为原始字符集。


import email, smtplib, ssl
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header, decode_header
subject = "Some non ASCII text"
receiver_email = "Pelé@example.com"
message = MIMEMultipart('mixed')
message['Subject'] = Header(subject, 'utf-8')
message['To'] = Header(receiver_email, 'iso-8859-1')
text = message.as_string()
print(text)
decode_header(text)
  

 

发送 DKIM 签名的邮件

使用 Python,您可以使用您的私钥发送数字签名的电子邮件。这在必须对发件人进行身份验证的情况下非常有用。

为此,您需要安装名为 dkimpy 的第三方软件包。您需要使用 setup.py 文件安装该包。

完成后,您可以通过运行以下语句导入它:


import dkim
  

现在,您可以使用私钥生成消息签名(为此,您需要生成公钥/私钥对)。之后,您必须将数字签名附加到您的多部分消息中,然后一切就完成了。


import smtplib, dkim, time, os
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
port = 587
smtp_server = "smtp-mail.outlook.com"
sender_email = "sender@outlook.com"
receiver_email = "receiver@gmail.com"
password = "strongPassword"
msg = MIMEMultipart()       
msg['From']= sender_email
msg['To']= receiver_email
msg['Subject']= "This is TEST"
message = "A digitally signed email"
msg.attach(message)
headers=[b'from', b'to', b'subject']
privateKey = open(os.path.join('private_kry.pem')).read()
signature = dkim.sign(msg.as_string(), b'key1', b'mydomain.com', privateKey.encode(), include_headers=headers)
signature = signature.decode()
msg['DKIM-Signature'] = signature[len("DKIM-Signature: "):]
context = ssl.create_default_context()
with smtplib.SMTP(smtp_server, port) as server:
    server.starttls(context=context)
    server.login(sender_email, password )
    server.sendmail(sender_email, receiver_email,msg)
print('Sent')
  

 

向多个收件人发送电子邮件

当您想要向多个收件人发送个性化电子邮件时,就会获得电子邮件自动化的真正好处。也许您有一个 CSV 文件,其中包含许多用户的姓名和电子邮件地址。

You can 在Python中读取CSV文件并循环每一行以检索收件人的姓名和电子邮件。

获得收件人信息后,您可以使用 str.format() 和占位符使您的消息更加个性化。操作方法如下:


import csv
import smtplib
import ssl
body = "Hello {name}!"
port = 587
server = "smtp-mail.outlook.com"
sender = "sender@outlook.com"
password = "strongPassword"
SSLcontext = ssl.create_default_context()
with smtplib.SMTP(server, port) as server:
    server.starttls(context = SSLcontext)
    server.login(sender_email, password)
    with open("file.csv") as file_handle:
        content = csv.reader(file_handle)
        next(content)  
        for name, email in content:
            server.sendmail(sender, email, body.format(name = name))
  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Python 发送电子邮件(多个示例) 的相关文章

  • Django 代理模型的继承和多态性

    我正在开发一个我没有启动的 Django 项目 我面临着一个问题遗产 我有一个大模型 在示例中简化 称为MyModel这应该代表不同种类的物品 的所有实例对象MyModel应该具有相同的字段 但方法的行为根据项目类型的不同而有很大差异 到目
  • 在 python 程序中合并第三方库的最佳实践是什么?

    下午好 我正在为我的工作编写一个中小型Python程序 该任务需要我使用 Excel 库xlwt and xlrd 以及一个用于查询 Oracle 数据库的库 称为CX Oracle 我正在通过版本控制系统 即CVS 开发该项目 我想知道围
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 如何使用 Ansible playbook 中的 service_facts 模块检查服务是否存在且未安装在服务器中?

    我用过service facts检查服务是否正在运行并启用 在某些服务器中 未安装特定的软件包 现在 我如何知道这个特定的软件包没有安装在该特定的服务器上service facts module 在 Ansible 剧本中 它显示以下错误
  • 如何替换 pandas 数据框列中的重音符号

    我有一个数据框dataSwiss其中包含瑞士城市的信息 我想用普通字母替换带有重音符号的字母 这就是我正在做的 dataSwiss Municipality dataSwiss Municipality str encode utf 8 d
  • 如何从网页中嵌入的 Tableau 图表中抓取工具提示值

    我试图弄清楚是否有一种方法以及如何使用 python 从网页中的 Tableau 嵌入图形中抓取工具提示值 以下是当用户将鼠标悬停在条形上时带有工具提示的图表示例 我从要从中抓取的原始网页中获取了此网址 https covid19 colo
  • 从 Flask 访问 Heroku 变量

    我已经使用以下命令在 Heroku 配置中设置了数据库变量 heroku config add server xxx xxx xxx xxx heroku config add user userName heroku config add
  • 如何在ipywidget按钮中显示全文?

    我正在创建一个ipywidget带有一些文本的按钮 但按钮中未显示全文 我使用的代码如下 import ipywidgets as widgets from IPython display import display button wid
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • Python 的“zip”内置函数的 Ruby 等价物是什么?

    Ruby 是否有与 Python 内置函数等效的东西zip功能 如果不是 做同样事情的简洁方法是什么 一些背景信息 当我试图找到一种干净的方法来进行涉及两个数组的检查时 出现了这个问题 如果我有zip 我可以写这样的东西 zip a b a
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • IO 密集型任务中的 Python 多线程

    建议仅在 IO 密集型任务中使用 Python 多线程 因为 Python 有一个全局解释器锁 GIL 只允许一个线程持有 Python 解释器的控制权 然而 多线程对于 IO 密集型操作有意义吗 https stackoverflow c
  • 向 Altair 图表添加背景实心填充

    I like Altair a lot for making graphs in Python As a tribute I wanted to regenerate the Economist graph s in Mistakes we
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 使用 Python 绘制 2D 核密度估计

    I would like to plot a 2D kernel density estimation I find the seaborn package very useful here However after searching
  • 使用其构造函数初始化 OrderedDict 以便保留初始数据的顺序的正确方法?

    初始化有序字典 OD 以使其保留初始数据的顺序的正确方法是什么 from collections import OrderedDict Obviously wrong because regular dict loses order d O
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip
  • 如何将输入读取为数字?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 Why are x and y下面的代码中使用字符串而不是整数 注意 在Python 2

随机推荐

  • 如何在 CentOS/RHEL 9/8/7 上安装 NRPE

    NRPE Nagios Remote Plugin Executor 是一个 Nagios 插件 用于在远程主机上远程执行插件和脚本 这允许您监视远程主机上的资源 例如磁盘使用情况 CPU 负载和网络活动 在本文中 我们将向您展示如何在 C
  • 如何在 Ubuntu 20.04 中安装 PostgreSQL 和 pgAdmin4

    PostgreSQL是一个强大 可靠 健壮且开源的对象关系数据库系统 该数据库系统的最新版本是 PostgreSQL 13 2 而版本 12 6 11 11 10 16 9 6 21 和 9 5 25 仍在定期更新 本教程介绍如何在 Ubu
  • 如何在 Ubuntu 和 Debian 中切换 Python 版本

    Python 是一种高级编程语言 广泛用于系统编程 它适用于所有流行的操作系统 您可以在单个系统上安装多个 Python 版本 安装多个 Python 版本后 您可以使用 update alternatives 工具切换默认 Python
  • 如何在 CentOS 7 上安装和使用 Docker

    Docker 是一种容器化技术 可让您快速构建 测试和部署应用程序 作为可移植 自给自足的容器 几乎可以在任何地方运行 在本教程中 我们将介绍如何在 CentOS 7 上安装 Docker CE 并探索基本的 Docker 概念和命令 先决
  • 如何在 CentOS 8 上安装 CouchDB

    Apache CouchDB 是由 Apache 软件基金会开发的免费开源 NoSQL 数据库 它可以用作单节点或集群数据库 CouchDB 服务器将其数据存储在命名数据库中 其中包含具有以下内容的文档JSON结构 每个文档由许多字段和附件
  • 如何在 Ubuntu 20.04 上安装 Kvm

    KVM 基于内核的虚拟机 是内置于 Linux 内核中的开源虚拟化技术 使用 KVM 运行多个 Linux 或 Windows 来宾虚拟机 每个来宾都与其他来宾完全隔离 并拥有自己的操作系统和专用虚拟硬件 例如 CPU 内存 网络接口和存储
  • 如何在 Ubuntu 20.04 上安装 OpenCV

    OpenCV 开源计算机视觉库 是一个开源计算机视觉库 绑定了 C Python 和 Java 并支持所有主要操作系统 它可以利用多核处理并具有 GPU 加速功能来实现实时操作 OpenCV 的应用范围很广 包括医学图像分析 拼接街景图像
  • 如何在 Debian 10 Linux 上添加交换空间

    交换空间是磁盘上的空间 当物理内存已满时使用 当 Linux 系统耗尽 RAM 时 非活动页面将从 RAM 移至交换空间 交换空间可以采用专用交换分区或交换文件的形式 通常 运行 Debian 虚拟机时不存在交换分区 因此唯一的选择是创建交
  • 如何在 CentOS 8 上安装 Apache Maven

    Apache Maven 是一个开源项目管理和理解工具 主要用于 Java 项目 Maven 使用项目对象模型 POM 它本质上是一个 XML 文件 其中包含有关项目 配置详细信息 项目依赖项等的信息 在本教程中 我们将解释如何在 Cent
  • 如何在 Ubuntu 18.04 上安装 TensorFlow

    TensorFlow是由 Google 构建的免费开源机器学习平台 许多组织都在使用它 包括 Twitter PayPal 英特尔 联想和空中客车公司 TensorFlow 可以在 Python 虚拟环境中安装在系统范围内 作为Docker
  • Linux 中的 Chattr 命令(文件属性)

    在 Linux 中 文件属性是描述文件行为的元数据属性 例如 属性可以指示文件是否被压缩或指定文件是否可以被删除 一些属性 如不变性 可以设置或清除 而其他属性 如加密 是只读的 只能查看 对某些属性的支持取决于所使用的文件系统 本文介绍了
  • 在Ubuntu上安装RPM包

    Ubuntu 存储库包含数千个 deb 软件包 可以从 Ubuntu 软件中心或使用apt命令行实用程序 Deb 是所有基于 Debian 的发行版 包括 Ubuntu 都使用的安装包格式 有些软件包在标准 Ubuntu 存储库中不可用 但
  • 如何检查PHP版本

    PHP 是最常用的服务器端编程语言之一 PHP 版本之间存在一些重要差异 因此在某些情况下可能需要了解您的服务器上运行的是哪个版本 例如 如果您在开始安装之前升级应用程序或安装需要特定 PHP 版本的新应用程序 则需要找出 PHP 服务器的
  • 如何在 Debian 10 Linux 上安装 Google Chrome 网络浏览器

    谷歌浏览器是世界上最流行的网络浏览器 它是专为现代网络打造的快速 直观且安全的浏览器 Chrome 不是开源浏览器 并且不包含在官方 Debian 存储库中 它是基于Chromium 一个开源浏览器 可在默认 Debian Buster 存
  • 如何在 Ubuntu 中将用户添加到 Sudoers

    sudo是一个命令行程序 允许受信任的用户以 root 或其他用户身份执行命令 在本文中 我们将向您展示两种向用户授予 sudo 权限的方法 第一个是将用户添加到sudoers 文件 该文件包含控制向哪些用户和组授予 sudo 权限以及权限
  • 检查 gzip 文件而不解压缩:zcat、zless 和 zmore

    Linux 提供了多个用于处理压缩文件的命令 例如 zcat zless 和 zmore 本教程将深入探讨这些命令的用法 让您可以导航和检查压缩文件 而无需解压缩它们 下表总结了这 3 种工具之间的差异 Tool Description P
  • 使用 source 命令在 Linux 中获取脚本

    The sourceLinux 中的 command 是一个内置的 shell 命令 用于从文件中读取和执行命令 这意味着脚本定义的任何变量或函数在脚本执行完成后仍然可用 现在 让我们开始探索它的功能source命令 目录 hide 1 子
  • Linux 上的 MySQL(初学者教程)

    在这篇文章中 我们将介绍 Linux 上 MySQL 的许多方面 首先 如何安装它 如何执行基本的 CRUD 操作 如何导入和导出数据 如何使用 MySQL 引擎本身 例如设置 root 用户密码 等等 MySQL 是世界上最流行的关系数据
  • 将 NumPy 数组转换为 Pandas DataFrame(15+ 场景)

    通常我们需要在 NumPy 数组中创建数据并将其转换为 DataFrame 因为我们必须处理 Pandas 方法 在这种情况下 转换NumPy 数组 ndarrays 到数据框使我们的数据分析变得方便 在本教程中 我们将仔细研究一些可用于将
  • 使用 Python 发送电子邮件(多个示例)

    Python 允许您使用其内置模块自动执行发送电子邮件的任务 这样做可以让您摆脱手动向数千名用户发送电子邮件的繁琐且耗时的任务 本教程将探讨一些快速 简单的发送电子邮件和使用 Python 内置电子邮件模块的方法 目录 hide 1 检查电