适合纯文科生的 python 100个知识点 实践九

208 阅读6分钟

highlight: an-old-hope

本文源自白璽,创自白璽。转载请标注出处。本文参与掘金日新计划【博客搬家】

PythonPython 标准库

53 hashlib库

hashlib是Python标准库中的一个模块,用于实现各种哈希函数,如SHA1、SHA256、MD5等。下面是一个使用hashlib模块计算字符串哈希值的例子:

import hashlib

# 计算字符串'string'的MD5哈希值
md5 = hashlib.md5()
md5.update('string'.encode('utf-8'))
print(md5.hexdigest())

# 计算字符串'string'的SHA1哈希值
sha1 = hashlib.sha1()
sha1.update('string'.encode('utf-8'))
print(sha1.hexdigest())

输出结果:

b45cffe084dd3d20d928bee85e7b0f21
e42b523aa1e00d53e9e47d6a3666b8e6b0051f6a

这个例子中,我们首先导入了hashlib模块,然后创建了md5sha1两个哈希对象。接着使用update()方法传入待计算哈希值的数据(这里是字符串'string'),并调用hexdigest()方法获取哈希值的字符串表示形式。

可以看到,对于相同的字符串,不同的哈希函数会得到不同的哈希值。在实际应用中,哈希函数可以用于加密、数据完整性校验等方面。

54 xml库

xml库是Python中用于处理XML文档的标准库。下面是一个简单的示例代码,它演示了如何使用xml库读取和修改XML文件。

import xml.etree.ElementTree as ET

# 读取XML文件
tree = ET.parse('example.xml')
root = tree.getroot()

# 遍历XML文件中的所有节点
for child in root:
    print(child.tag, child.attrib)

# 修改XML文件中的节点
for neighbor in root.iter('neighbor'):
    if neighbor.attrib['name'] == 'B':
        neighbor.attrib['name'] = 'C'

# 添加新的节点到XML文件
new_neighbor = ET.SubElement(root, 'neighbor')
new_neighbor.set('name', 'D')

# 保存修改后的XML文件
tree.write('example.xml')

以上代码中,我们首先使用ET.parse()方法读取XML文件,并使用getroot()方法获取XML文件的根节点。然后使用for循环遍历根节点的所有子节点,并使用print()函数打印节点名称和属性。

接下来,我们使用root.iter()方法遍历XML文件中所有名为'neighbor'的节点,并使用if语句判断节点的属性是否等于'B'。如果是,我们将节点的'name'属性修改为'C'。

最后,我们使用ET.SubElement()方法创建一个新的节点,并使用set()方法设置节点的'name'属性。然后使用tree.write()方法将修改后的XML文件保存到磁盘上。

55 socket库

Python的socket库提供了对套接字编程的支持,可以实现网络通信。以下是一个简单的使用socket库的示例代码:

import socket

# 创建TCP套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定IP地址和端口号
server_socket.bind(('127.0.0.1', 8000))

# 监听客户端连接
server_socket.listen(1)

print('Server is running...')

while True:
    # 等待客户端连接
    client_socket, client_address = server_socket.accept()

    print('Client %s:%s connected.' % client_address)

    # 接收客户端发送的数据
    data = client_socket.recv(1024)

    print('Received data: %s' % data.decode('utf-8'))

    # 发送响应数据给客户端
    response = 'Hello, client!'
    client_socket.send(response.encode('utf-8'))

    # 关闭客户端连接
    client_socket.close()

上述代码创建了一个TCP服务器,监听端口号为8000。当客户端连接到服务器后,服务器会接收客户端发送的数据,并返回一个响应数据。

下面是一个简单的TCP客户端示例代码,可以用于连接上述TCP服务器:

import socket

# 创建TCP套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 连接服务器
client_socket.connect(('127.0.0.1', 8000))

# 发送数据给服务器
data = 'Hello, server!'
client_socket.send(data.encode('utf-8'))

# 接收服务器返回的数据
response = client_socket.recv(1024)

print('Received response: %s' % response.decode('utf-8'))

# 关闭套接字
client_socket.close()

当客户端连接到服务器后,客户端会发送一条数据给服务器,并等待服务器返回响应数据。服务器接收到客户端发送的数据后,会返回一个响应数据给客户端。

56 smtplib库

smtplib库是Python中内置的用于发送电子邮件的库。它提供了一个SMTP客户端实现,可以用来发送邮件。下面是一个使用smtplib库发送邮件的例子:

import smtplib
from email.mime.text import MIMEText

# 邮件内容
msg = MIMEText('这是一封测试邮件!')
msg['Subject'] = '测试邮件' # 邮件标题
msg['From'] = 'example@gmail.com' # 发件人邮箱
msg['To'] = 'recipient@example.com' # 收件人邮箱

# 发送邮件
smtp_server = 'smtp.gmail.com' # SMTP服务器地址
smtp_port = 587 # SMTP服务器端口号
username = 'example@gmail.com' # 邮箱账号
password = 'password' # 邮箱密码
try:
    server = smtplib.SMTP(smtp_server, smtp_port)
    server.starttls()
    server.login(username, password)
    server.sendmail(username, msg['To'], msg.as_string())
    server.quit()
    print('邮件发送成功!')
except Exception as e:
    print('邮件发送失败:', e)

在这个例子中,我们使用smtplib库创建一个SMTP客户端,连接到Gmail的SMTP服务器,并使用starttls()方法启用TLS加密。然后我们使用login()方法登录到邮箱账号,并使用sendmail()方法发送邮件。最后我们使用quit()方法关闭SMTP客户端连接。

需要注意的是,在使用smtplib库发送邮件时,需要提供正确的SMTP服务器地址和端口号,并且可能需要启用TLS加密和身份验证。此外,邮件的发送者和接收者也需要正确设置。

57 ftplib库

ftplib是Python自带的一个用于FTP客户端编程的库。它允许我们通过FTP协议上传、下载、删除、重命名文件或目录,以及列出远程FTP服务器上的文件和目录等。

以下是一个简单的示例代码,演示如何使用ftplib库连接FTP服务器,上传文件,并断开连接:

import ftplib

ftp = ftplib.FTP("ftp.example.com")  # 连接FTP服务器
ftp.login("username", "password")   # 登录

filename = "example.txt"
with open(filename, "rb") as file:
    ftp.storbinary("STOR " + filename, file)  # 上传文件

ftp.quit()  # 断开连接

在这个示例中,我们首先使用ftplib库中的FTP类连接到FTP服务器,然后使用login()方法登录到服务器。接下来,我们使用open()函数打开一个本地文件,并使用storbinary()方法将其上传到FTP服务器上。最后,我们使用quit()方法断开与服务器的连接。

除了上传文件之外,ftplib还提供了许多其他的功能,例如下载文件、删除文件、重命名文件、创建目录、删除目录等。我们可以根据自己的需要使用这些功能。

需要注意的是,使用ftplib库需要确保你有FTP服务器的访问权限。如果你没有FTP服务器,可以尝试使用一些公共的FTP服务器进行测试。

58 email库

email库是Python自带的标准库,用于处理邮件相关的内容,包括创建、发送、解析和读取邮件等。下面是一个简单的示例,演示了如何使用email库创建一封邮件并发送。

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage

# 发件人邮箱
sender_email = 'sender@example.com'
# 收件人邮箱
receiver_email = 'receiver@example.com'
# 邮件主题
subject = '这是一封测试邮件'

# 创建MIMEMultipart对象
message = MIMEMultipart()
message['From'] = sender_email
message['To'] = receiver_email
message['Subject'] = subject

# 邮件正文
text = '这是一封测试邮件'
text_part = MIMEText(text, 'plain')
message.attach(text_part)

# 添加图片附件
with open('image.jpg', 'rb') as f:
    image_data = f.read()
image_part = MIMEImage(image_data, name='image.jpg')
message.attach(image_part)

# 发送邮件
with smtplib.SMTP('smtp.example.com', 587) as smtp:
    smtp.starttls()
    smtp.login(sender_email, 'password')
    smtp.send_message(message)

上面的代码中,首先创建了一个MIMEMultipart对象,作为邮件的主体。然后添加了邮件正文和图片附件,最后使用SMTP对象发送邮件。

需要注意的是,邮件正文和附件都需要使用相应的MIME类型进行编码,例如文本类型使用MIMEText,图片类型使用MIMEImage等。另外,在发送邮件之前需要先登录SMTP服务器,并使用starttls()方法启用TLS加密

本文是结合ChatGPT的答案总结的知识点,有不足之处请大佬们给出反馈。