当前位置:   article > 正文

Python 自动化脚本系列:第2集

Python 自动化脚本系列:第2集

好了,今天咱们来看看Python自动化操作的第二集,想要回顾上一集的朋友们可以点击如下链接:

Python 自动化脚本系列:第1集

话不多说,直接上干货。

11. 用 Python 自动备份文件

定期备份重要文件对于防止数据丢失至关重要。Python 提供了 shutil 模块用于文件和目录操作,可以轻松实现文件备份的自动化。

示例:将文件备份到远程服务器

假设你想要使用 SSH 自动备份特定文件到远程服务器。以下是如何使用 Python 和 paramiko 库实现这一目标的方法:

import os
import paramiko

# SSH 连接详情
hostname = '你的远程服务器'
username = '你的用户名'
password = '你的密码'

# 本地目录和要备份的文件
local_dir = '/本地目录的路径'
files_to_backup = ['文件1.txt', '文件2.txt', '文件3.txt']

# 远程备份目录
remote_dir = '/远程备份目录的路径'

# 创建一个 SSH 客户端
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname, username=username, password=password)

# 创建一个 SFTP 客户端
sftp = ssh.open_sftp()

# 备份每个文件
for file_name in files_to_backup:
    local_path = os.path.join(local_dir, file_name)
    remote_path = os.path.join(remote_dir, file_name)
    sftp.put(local_path, remote_path)

# 关闭 SFTP 和 SSH 连接
sftp.close()
ssh.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

这段代码建立了一个 SSH 连接到远程服务器,使用提供的凭据。然后创建了一个 SFTP 客户端来传输文件。它遍历了本地目录中指定的文件,并使用 sftp.put() 方法将每个文件上传到相应的远程目录。最后,关闭了 SFTP 和 SSH 连接。

12. 用 Pillow 自动处理图像

Python 的 Pillow 库提供了广泛的图像处理功能,可以实现自动化任务,如调整大小、裁剪和给图像添加水印。

示例:调整大小并为图像添加水印

假设你有一个包含图像的目录,你想要将它们调整为特定大小并为每个图像添加水印。以下是如何使用 Pillow 自动完成此任务的方法:

from PIL import Image, ImageDraw, ImageFont
import os

# 包含图像的目录
image_dir = '/图像目录的路径'

# 调整大小后的图像尺寸
new_size = (800, 600)

# 水印文字和字体
watermark_text = '你的水印'
font = ImageFont.truetype('arial.ttf', 36)

# 遍历目录中的图像
for filename in os.listdir(image_dir):
    if filename.endswith('.jpg') or filename.endswith('.png'):
        # 打开图像
        image_path = os.path.join(image_dir, filename)
        image = Image.open(image_path)

        # 调整图像大小
        resized_image = image.resize(new_size)

        # 添加水印
        draw = ImageDraw.Draw(resized_image)
        text_width, text_height = draw.textsize(watermark_text, font)
        x = resized_image.width - text_width - 10
        y = resized_image.height - text_height - 10
        draw.text((x, y), watermark_text, font=font, fill=(255, 255, 255, 128))

        # 保存修改后的图像
        new_filename = f"resized_{filename}"
        new_image_path = os.path.join(image_dir, new_filename)
        resized_image.save(new_image_path)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

这段代码遍历了指定目录中的图像,使用 resize() 方法将每个图像调整为所需的尺寸,并使用 ImageDraw 类将水印添加到图像的右下角。修改后的图像保存时加了一个新的文件名前缀。

13. 用 Matplotlib 自动进行数据可视化

Python 的 Matplotlib 库使你能够通过编程方式创建各种可视化。自动化数据可视化任务可以节省生成报告和洞察力的时间和精力。

示例:生成销售报告

假设你有一个包含销售数据的 CSV 文件,你想要生成一个带有柱状图和饼图的可视化报告。以下是如何使用 Matplotlib 自动完成此任务的方法:

import pandas as pd
import matplotlib.pyplot as plt

# 读取 CSV 文件
data = pd.read_csv('sales_data.csv')

# 为每个类别创建一个柱状图
plt.figure(figsize=(8, 6))
plt.bar(data['Category'], data['Sales'])
plt.xlabel('类别')
plt.ylabel('销售额')
plt.title('各类别销售额')
plt.xticks(rotation=45)
plt.tight_layout()
plt.savefig('销售额按类别.png')

# 为销售分布创建一个饼图
plt.figure(figsize=(8, 8))
plt.pie(data['Sales'], labels=data['Category'], autopct='%1.1f%%')
plt.title('销售分布')
plt.tight_layout()
plt.savefig('销售分布.png')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

这段代码使用 pandas 从 CSV 文件中读取销售数据。然后使用 Matplotlib 的 bar() 函数创建了一个柱状图,显示每个类别的销售额。图表使用标签、标题和旋转的 x 轴标签进行了自定义。图表保存为图像文件。接下来,它使用 pie() 函数创建了一个饼图,表示各类别的销售分布。饼图包括百分比标签和标题,并保存为图像文件。

14. 用 psutil 自动进行系统监控

Python 的 psutil 库允许你获取有关正在运行的进程和系统利用率的信息。你可以自动化系统监控任务来跟踪资源使用情况并检测异常。

示例:监控 CPU 和内存使用情况

假设你想要监控系统的 CPU 和内存使用情况,并定期记录信息。以下是如何使用 psutil 自动完成此任务

的方法:

import psutil
import time
import logging

# 配置日志记录
logging.basicConfig(filename='系统监控.log', level=logging.INFO,
                    format='%(asctime)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S')

# 监控间隔(秒)
interval = 60

while True:
    # 获取 CPU 使用率
    cpu_percent = psutil.cpu_percent()

    # 获取内存使用率
    memory = psutil.virtual_memory()
    memory_percent = memory.percent

    # 记录信息
    logging.info(f"CPU 使用率:{cpu_percent}%")
    logging.info(f"内存使用率:{memory_percent}%")

    # 等待指定间隔
    time.sleep(interval)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

这段代码设置了日志记录,将监控信息写入日志文件。然后进入一个无限循环,在循环中使用 psutil.cpu_percent() 获取 CPU 使用率百分比,使用 psutil.virtual_memory().percent 获取内存使用率百分比。获取到的信息使用 logging 模块记录。脚本使用 time.sleep() 在下一次迭代之前等待指定的间隔(以秒为单位),允许你控制监控的频率。

15. 用 Selenium 自动进行 Web 应用测试

Selenium 是一个强大的工具,用于自动化 Web 应用测试。它允许你模拟用户交互、验证页面元素,并确保 Web 应用程序的正常运行。

示例:测试用户登录

假设你想要自动化测试 Web 应用程序中用户登录功能。以下是如何使用 Selenium 实现这一目标的方法:

from selenium import webdriver
from selenium.webdriver.common.by import By

# 创建一个 Chrome 驱动程序的新实例
driver = webdriver.Chrome()

# 导航到登录页面
driver.get('https://example.com/login')

# 查找用户名和密码字段并输入凭据
username_field = driver.find_element(By.NAME, 'username')
username_field.send_keys('你的用户名')

password_field = driver.find_element(By.NAME, 'password')
password_field.send_keys('你的密码')

# 查找并点击登录按钮
login_button = driver.find_element(By.XPATH, '//button[@type="submit"]')
login_button.click()

# 验证成功登录
welcome_message = driver.find_element(By.XPATH, '//h1[contains(text(), "Welcome")]')
assert welcome_message.is_displayed(), "登录失败"

# 关闭浏览器
driver.quit()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

这段代码使用 Selenium 自动化测试用户登录功能。它创建了一个 Chrome 驱动程序实例,导航到登录页面,找到用户名和密码字段,输入凭据,然后点击登录按钮。登录尝试后,它验证欢迎消息的存在以确保成功登录。如果欢迎消息未显示,将引发断言错误。最后,关闭浏览器。

16. 使用 zipfile 自动压缩和归档文件

Python 的 zipfile 模块允许你创建、读取和提取 ZIP 归档文件。你可以自动化文件压缩和归档任务,以节省存储空间并促进文件共享。

示例:将多个文件压缩到一个 ZIP 归档文件中

假设你有一个包含多个文件的目录,你想要将它们压缩到一个单独的 ZIP 归档文件中。以下是如何使用 zipfile 模块自动完成此任务的方法:

import os
import zipfile

# 包含要压缩文件的目录
directory = '/目录的路径'

# 输出 ZIP 归档文件的名称
zip_filename = 'archive.zip'

# 创建一个新的 ZIP 归档文件
with zipfile.ZipFile(zip_filename, 'w') as zip_file:
    # 遍历目录中的文件
    for filename in os.listdir(directory):
        file_path = os.path.join(directory, filename)

        # 将每个文件添加到 ZIP 归档文件中
        zip_file.write(file_path, filename)

print(f"文件已压缩到 {zip_filename}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

这段代码使用 zipfile.ZipFile 类以写入模式(‘w’)创建了一个新的 ZIP 归档文件。然后它遍历了指定目录中的文件,并使用 write() 方法将每个文件添加到 ZIP 归档文件中。提供了原始文件路径和希望在归档文件中使用的文件名。最后,它打印一条消息,指示文件已成功压缩到 ZIP 归档文件中。

17. 使用 SQLite 自动化数据库操作

Python 通过 sqlite3 模块提供了对 SQLite 数据库的内置支持。你可以自动化数据库操作,例如创建表、插入数据和查询记录。

示例:将数据存储到 SQLite 数据库并检索

假设你想要使用 Python 将数据存储到 SQLite 数据库中并检索。以下是如何自动完成此任务的示例:

import sqlite3

# 连接到数据库(如果不存在则创建一个新的数据库)
conn = sqlite3.connect('example.db')

# 创建一个表
conn.execute('''CREATE TABLE IF NOT EXISTS users
             (id INTEGER PRIMARY KEY,
             name TEXT,
             email TEXT)''')

# 向表中插入数据
conn.execute("INSERT INTO users (name, email) VALUES (?, ?)", ('John Doe', 'john@example.com'))
conn.execute("INSERT INTO users (name, email) VALUES (?, ?)", ('Jane Smith', 'jane@example.com'))

# 提交更改
conn.commit()

# 从表中查询数据
cursor = conn.execute("SELECT * FROM users")
for row in cursor:
    print(f"ID: {row[0]}, Name: {row[1]}, Email: {row[2]}")

# 关闭连接
conn.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

这段代码使用 sqlite3.connect() 建立与 SQLite 数据库的连接。它使用 SQL CREATE TABLE 语句创建了一个名为 “users” 的表,包含 ID、name 和 email 列。然后,它使用 SQL INSERT 语句向 “users” 表中插入了两行数据。调用 conn.commit() 提交了更改。接下来,它使用 SQL SELECT 语句从 “users” 表中查询了所有数据,并使用游标检索结果。最后,使用 conn.close() 关闭了数据库连接。

18. 使用 Python 自动化文件重命名

Python 的 os 模块提供了用于文件和目录操作的函数,包括重命名文件。你可以根据特定模式或标准自动化多个文件的重命名过程。

示例:使用前缀重命名文件

假设你有一个包含文件的目录,你想要通过在它们的名称前面添加前缀来重命名所有文件。以下是如何使用 Python 自动完成此任务的方法:

import os

# 包含要重命名文件的目录
directory = '/目录的路径'

# 要添加到文件名前面的前缀
prefix = 'new_'

# 遍历目录中的文件
for filename in os.listdir(directory):
    # 获取文件扩展名
    _, extension = os.path.splitext(filename)
    
    # 创建带有前缀的新文件名
    new_filename = prefix + filename
    
    # 重命名文件
    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}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

这段代码遍历了指定目录中的文件。对于每个文件,它使用 os.path.splitext() 提取了文件扩展名。然后,它通过将所需的前缀与原始文件名连接起来创建了一个新的文件名。使用 os.rename() 将文件从旧路径重命名为带有更新文件名的新路径。最后,它打印一条消息,指示每个文件的重命名。

19. 使用 rsync 自动化文件同步

rsync 是一个强大的工具,用于在不同位置之间高效同步文件和目录。Python 提供了 subprocess 模块,允许你从 Python 脚本中执行 shell 命令,包括 rsync。

示例:在本地目录和远程目录之间同步文件

假设你想要使用 rsync 自动化本地目录和远程目录之间的文件同步。以下是如何使用 Python 实现这一目标的方法:

import subprocess

# 要同步的本地目录
local_dir = '/本地目录的路径/'

# 要与之同步的远程目录
remote_dir = 'user@remote_host:/远程目录的路径/'

# rsync 命令及其选项
rsync_command = ['rsync', '-avz', '--delete', local_dir, remote_dir]

# 执行 rsync 命令
subprocess

.run(rsync_command, check=True)

print("文件同步已完成。")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

这段代码定义了要同步的本地目录和远程目录。然后,它使用必要的选项构建了 rsync 命令:

  • -a:归档模式,保留权限和时间戳
  • -v:详细输出
  • -z:在传输过程中压缩数据
  • --delete:删除目标中不存在于源中的文件

使用 subprocess.run() 执行了 rsync 命令,作为子进程运行命令。check=True 参数确保如果命令失败则会引发异常。最后,它打印一条消息,指示文件同步已完成。

20. 使用 gTTS 自动进行文本转语音

Python 的 gTTS(Google 文本转语音)库允许你使用 Google 的文本转语音 API 将文本转换为语音。你可以通过编程方式自动化从文本生成音频文件的过程。

示例:将文本转换为语音

假设你有一个文本文件,你想要将其内容转换为音频文件。以下是如何使用 gTTS 自动完成此任务的方法:

from gtts import gTTS
import os

# 要转换的文本文件
text_file = 'example.txt'

# 输出音频文件
audio_file = 'output.mp3'

# 从文件中读取文本
with open(text_file, 'r') as file:
    text = file.read()

# 创建 gTTS 对象并生成音频
tts = gTTS(text=text, lang='en')
tts.save(audio_file)

print(f"文本已转换为语音。音频保存为 {audio_file}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

这段代码使用 open()file.read() 从指定的文本文件中读取文本。然后,它创建了一个 gTTS 对象,传递了文本和所需的语言(‘en’ 表示英语)。调用 save() 方法在指定的文件名下生成音频文件并保存。最后,它打印一条消息,指示文本已成功转换为语音,并显示生成的音频文件的位置。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/614973
推荐阅读
相关标签
  

闽ICP备14008679号