31. 使用 glob 自动化文件搜索
Python 的 glob 模块提供了一种使用通配符模式搜索文件和目录的方法。你可以根据特定的模式自动搜索文件。
示例:搜索具有特定扩展名的文件
假设你想在目录中搜索具有特定扩展名的所有文件。下面是如何使用 glob 模块自动化这个任务的方法:
import glob
# 要搜索的目录
directory = 'path/to/directory'
# 搜索具有特定扩展名的文件
extension = '*.txt'
files = glob.glob(directory + '/' + extension)
# 打印匹配的文件
for file in files:
print(file)
这段代码定义了要搜索文件的目录和所需的文件扩展名。它使用 glob.glob()
函数来搜索与指定模式匹配的文件。模式是通过连接目录路径和扩展名通配符模式构建的。匹配的文件存储在 files
列表中。最后,它遍历匹配文件列表并打印每个文件的路径。
32. 使用正则表达式自动化文件重命名
Python 的 re 模块提供了对正则表达式的支持,可以用于模式匹配和字符串操作。你可以使用正则表达式自动化根据特定模式重命名文件。
示例:根据模式重命名文件
假设你有一个包含具有特定命名模式的文件的目录,并且想根据不同的模式对它们进行重命名。下面是如何使用正则表达式自动化这个任务的方法:
import os
import re
# 包含要重命名文件的目录
directory = 'path/to/directory'
# 用于匹配文件名的正则表达式模式
pattern = r'file_(\d+)\.txt'
# 遍历目录中的文件
for filename in os.listdir(directory):
# 检查文件名是否与模式匹配
match = re.match(pattern, filename)
if match:
# 提取匹配的组(数字)
number = match.group(1)
# 创建新文件名
new_filename = f'newfile_{number}.txt'
# 重命名文件
old_path = os.path.join(directory, filename)
new_path = os.path.join(directory, new_filename)
os.rename(old_path, new_path)
print(f"已重命名:{filename} -> {new_filename}")
34. 使用 PyCryptodome 自动化文件加密
Python 的 PyCryptodome 库提供了用于安全加密和解密文件的密码学基元。你可以使用对称加密算法自动化文件的加密和解密过程。
示例:使用 AES 加密和解密文件
假设你想使用 AES 加密算法加密文件,然后再解密它。下面是如何使用 PyCryptodome 自动化这个任务的方法:
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
# 要加密的文件
file_to_encrypt = 'sensitive_data.txt'
# 生成随机加密密钥
key = get_random_bytes(16)
# 创建 AES 密码器对象
cipher = AES.new(key, AES.MODE_EAX)
# 读取文件内容
with open(file_to_encrypt, 'rb') as file:
plaintext = file.read()
# 加密数据
ciphertext, tag = cipher.encrypt_and_digest(plaintext)
# 将加密数据写入新文件
with open('encrypted_file.bin', 'wb') as file:
[file.write(x) for x in (cipher.nonce, tag, ciphertext)]
print("文件加密成功。")
# 解密文件
with open('encrypted_file.bin', 'rb') as file:
nonce, tag, ciphertext = [file.read(x) for x in (16, 16, -1)]
cipher = AES.new(key, AES.MODE_EAX, nonce)
plaintext = cipher.decrypt_and_verify(ciphertext, tag)
# 将解密的数据写入新文件
with open('decrypted_file.txt', 'wb') as file:
file.write(plaintext)
print("文件解密成功。")
这段代码使用 get_random_bytes()
生成随机的加密密钥。它使用该密钥和 EAX 模式创建 AES 密码器对象。然后,它读取要加密的文件的内容,并使用密码器对象的 encrypt_and_digest()
方法对数据进行加密。加密的数据,连同随机数和标签,写入名为 ‘encrypted_file.bin’ 的新文件。要解密文件,它从加密文件中读取随机数、标签和密文。它使用相同的密钥和随机数创建新的 AES 密码器对象。`decrypt_and
_verify()` 方法用于解密密文并验证完整性使用标签。然后,解密的数据被写入名为 ‘decrypted_file.txt’ 的新文件。
35. 使用 bz2 自动化文件压缩
Python 的 bz2 模块提供了使用 bzip2 压缩算法对文件进行压缩和解压缩的支持。你可以使用 Python 自动化文件压缩,以节省存储空间并减少文件传输时间。
示例:使用 bzip2 压缩和解压缩文件
假设你想使用 bzip2 压缩文件,然后再解压缩它。下面是如何使用 Python 自动化这个任务的方法:
import bz2
# 要压缩的文件
file_to_compress = 'example.txt'
# 压缩文件
with open(file_to_compress, 'rb') as file_in:
with bz2.open(file_to_compress + '.bz2', 'wb') as file_out:
file_out.write(file_in.read())
print("文件成功压缩。")
# 解压缩文件
with bz2.open(file_to_compress + '.bz2', 'rb') as file_in:
with open('decompressed_file.txt', 'wb') as file_out:
file_out.write(file_in.read())
print("文件成功解压缩。")
这段代码以二进制读取模式(‘rb’)打开要压缩的文件。然后,它使用 bz2.open()
在二进制写入模式(‘wb’)下创建一个新的 bzip2 文件。使用 write()
将原始文件的内容写入 bzip2 文件。要解压缩文件,它以二进制读取模式(‘rb’)打开 bzip2 文件。然后,使用二进制写入模式(‘wb’)将解压缩的内容写入名为 ‘decompressed_file.txt’ 的新文件。
36. 使用 Pillow 自动化图片转换
Python 的 Pillow 库提供了对图像的处理功能,包括将图像从一种格式转换为另一种格式。你可以使用 Pillow 自动化将多个图像转换为特定格式的过程。
示例:将图像转换为 JPEG 格式
假设你有一个包含不同格式的图像的目录,并且想将所有图像转换为 JPEG 格式。下面是如何使用 Pillow 自动化这个任务的方法:
from PIL import Image
import os
# 包含图像的目录
image_directory = 'path/to/image/directory'
# 遍历目录中的图像
for filename in os.listdir(image_directory):
if filename.endswith('.png') or filename.endswith('.bmp'):
# 打开图像
image_path = os.path.join(image_directory, filename)
image = Image.open(image_path)
# 将图像转换为 JPEG 格式
new_filename = os.path.splitext(filename)[0] + '.jpg'
new_image_path = os.path.join(image_directory, new_filename)
image.save(new_image_path, 'JPEG')
print(f"已转换:{filename} -> {new_filename}")
print("图像转换完成。")
这段代码遍历指定图像目录中的文件。它检查每个文件是否具有 ‘.png’ 或 ‘.bmp’ 扩展名以识别图像文件。对于每个图像文件,它使用 Pillow 库的 Image.open()
打开图像。然后,使用 save()
方法将图像转换为 JPEG 格式,并指定带有 ‘.jpg’ 扩展名的新文件名。转换后的图像保存在相同目录中,并打印每个图像的转换信息。最后,它打印一条消息,指示图像转换过程已完成。
37. 使用 Dropbox API 自动化文件备份到云存储
Python 提供了与各种云存储服务交互的库,如 Dropbox。你可以使用 Dropbox API 自动化将文件备份到 Dropbox。
示例:将文件备份到 Dropbox
假设你想备份特定文件到 Dropbox。下面是如何使用 Dropbox API 自动化这个任务的方法:
import dropbox
# Dropbox 访问令牌
ACCESS_TOKEN = 'your_access_token'
# 要备份的文件
files_to_backup = ['file1.txt', 'file2.txt', 'file3.txt']
# 创建 Dropbox 客户端
dbx = dropbox.Dropbox(ACCESS_TOKEN)
# 将每个文件备份到 Dropbox
for file in files_to_backup:
with open(file, 'rb') as f:
dbx.files_upload(f.read(), f'/backup/{file}')
print(f"已备份:{file}")
print("文件备份完成。")
这段代码假设你已经获得了 Dropbox API 的访问令牌。你需要用你的实际访问令牌替换 'your_access_token'
。它定义了要备份的文件列表。然后,它使用 dropbox.Dropbox()
构造函数创建 Dropbox 客户端,传递访问令牌。它遍历要备份的文件。对于每个文件,它以二进制读取模式(‘rb’)打开文件,并使用 files_upload()
方法将其内容上传到 Dropbox,指定在 Dropbox 中的 ‘/backup/’ 目录下的路径。它打印每个文件备份的信息,并最后打印一条消息,指示文件备份过程已完成。
38. 使用 BeautifulSoup 自动化网络爬虫
Python 的 BeautifulSoup 库被广泛用于网络爬虫任务。它允许你解析 HTML 和 XML 文档,并从网页中提取所需信息。
示例:从电子商务网站抓取产品信息
假设你想从一个电子商务网站上抓取产品信息。下面是如何使用 BeautifulSoup 自动化这个任务的方法:
import requests
from bs4 import BeautifulSoup
# 电子商务网站的 URL
url = '
https://www.example.com/products'
# 发送 GET 请求到 URL
response = requests.get(url)
# 创建 BeautifulSoup 对象
soup = BeautifulSoup(response.content, 'html.parser')
# 查找所有产品元素
products = soup.find_all('div', class_='product')
# 从每个产品中提取信息
for product in products:
name = product.find('h3', class_='product-name').text
price = product.find('span', class_='product-price').text
description = product.find('p', class_='product-description').text
print(f"产品:{name}")
print(f"价格:{price}")
print(f"描述:{description}")
print("---")
这段代码使用 requests.get()
发送到指定 URL 的 GET 请求。然后,它通过传递响应内容和要使用的 HTML 解析器创建了一个 BeautifulSoup 对象。它使用 find_all()
找到页面上的所有产品元素,使用适当的 CSS 类选择器。然后,它遍历每个产品元素,并使用 find()
和相应的 CSS 类选择器提取所需的信息,如产品名称、价格和描述。对于每个产品,它打印提取的信息,并用一行破折号分隔。
39. 使用 rsync 自动化文件同步
Python 的 subprocess 模块允许你从 Python 脚本中执行 shell 命令,包括 rsync。你可以使用 rsync 自动化文件同步任务,以保持不同目录或机器之间的文件同步。
示例:在本地目录之间同步文件
假设你想在两个本地目录之间同步文件。下面是如何使用 rsync 自动化这个任务的方法:
import subprocess
# 源目录
source_dir = '/path/to/source/directory/'
# 目标目录
dest_dir = '/path/to/destination/directory/'
# rsync 命令
rsync_command = ['rsync', '-avz', '--delete', source_dir, dest_dir]
# 执行 rsync 命令
subprocess.run(rsync_command, check=True)
print("文件同步完成。")
这段代码定义了文件同步的源目录和目标目录。它构造了 rsync 命令,其中包括必要的选项:
-a
:归档模式,保留权限和时间戳-v
:详细输出-z
:在传输过程中压缩数据--delete
:删除目标中不存在于源中的文件
使用 subprocess.run()
执行 rsync 命令,该命令作为子进程运行。check=True
参数确保如果命令失败,则引发异常。最后,它打印一条消息,指示文件同步过程已完成。
40. 使用 zipfile 自动化文件压缩和归档
Python 的 zipfile 模块允许你创建和提取 ZIP 归档。你可以使用它自动化将文件压缩和归档到 ZIP 归档中,并从 ZIP 归档中提取文件。
示例:创建和提取 ZIP 归档
假设你想创建一个包含多个文件的 ZIP 归档,并稍后从归档中提取文件。下面是如何使用 zipfile 模块自动化这个任务的方法:
import zipfile
# 要包含在归档中的文件
files_to_archive = ['file1.txt', 'file2.txt', 'file3.txt']
# ZIP 归档的名称
archive_name = 'example.zip'
# 创建 ZIP 归档
with zipfile.ZipFile(archive_name, 'w') as zip_file:
for file in files_to_archive:
zip_file.write(file)
print("ZIP 归档创建成功。")
# 从 ZIP 归档中提取文件
with zipfile.ZipFile(archive_name, 'r') as zip_file:
zip_file.extractall()
print("文件提取成功。")
这段代码定义了要包含在 ZIP 归档中的文件列表和归档的名称。它以写入模式(‘w’)使用 zipfile.ZipFile()
打开 ZIP 归档。然后,它遍历要归档的文件,并使用 write()
方法将每个文件添加到归档中。要从 ZIP 归档中提取文件,它以读取模式(‘r’)再次使用 zipfile.ZipFile()
打开归档,并使用 extractall()
方法提取所有文件。最后,它打印消息,指示 ZIP 归档的创建和文件提取过程已完成。