【Python】自动化脚本【批量处理】【自动化发邮件】【自动填表】

1. 批量重命名文件

以下是一个 Python批量重命名指定目录中的文件 的脚本。这个脚本会将目录中的所有文件按照一定的命名规则重命名,例如添加前缀或后缀,或者按照数字顺序命名。

python 复制代码
import os

def batch_rename(directory, prefix='', suffix='', start_number=1):
    """
    批量重命名指定目录中的文件。
    :param directory: 要重命名的文件所在的目录
    :param prefix: 要添加的前缀字符串
    :param suffix: 要添加的后缀字符串,通常用于指定文件格式,如 '.txt'
    :param start_number: 重命名文件的起始数字
    """
    # 获取指定目录下的所有文件列表
    files = os.listdir(directory)
    
    # 确保不会覆盖已存在的文件
    existing_files = os.listdir(directory)
    
    for index, file in enumerate(files, start=start_number):
        # 构建新的文件名
        file_name, file_extension = os.path.splitext(file)
        new_file_name = f"{prefix}{index}{suffix}{file_extension}"
        
        # 检查新文件名是否已存在
        if new_file_name in existing_files:
            print(f"文件 {new_file_name} 已存在,跳过重命名。")
            continue
        # 构建完整的旧文件路径和新文件路径
        old_file = os.path.join(directory, file)
        new_file = os.path.join(directory, new_file_name)
        
        # 重命名文件
        try:
            os.rename(old_file, new_file)
            print(f"文件 '{file}' 已重命名为 '{new_file_name}'")
        except OSError as e:
            print(f"重命名 '{file}' 时出错: {e}")
            
# 使用示例
# 假设我们要重命名当前目录下的所有文件,添加前缀 'new_',后缀 '.txt',从数字 1 开始
batch_rename('.', 'new_', '.txt', 1)

在使用这个脚本之前,需要使用管理员权限运行程序以确保有权限修改目标目录中的文件,并且备份重要文件以防万一。这个脚本会遍历指定目录中的所有文件,并为它们分配一个新的文件名。可以根据需要修改prefixsuffixstart_number参数。

注意: 在运行这个脚本之前,需要将 '.' 替换为你想要重命名文件的实际目录路径。此外,如果你想要保留原来的文件扩展名,请不要在suffix参数中包含点号(.)。如果你想要为所有文件添加相同的扩展名,可以在suffix参数中指定它。

2. 定时发送邮件

以下是一个使用 Python 的smtplibemail库来定时发送邮件的脚本。这个脚本会配置一个SMTP服务器,创建一个简单的电子邮件,并设置一个定时器来发送邮件。

python 复制代码
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import time
from datetime import datetime

# 邮件发送者信息
sender_email = "your_email@example.com"  # 发送者邮箱
sender_password = "your_password"  # 发送者邮箱密码或SMTP授权码

# 邮件接收者信息
receiver_email = "receiver_email@example.com"  # 接收者邮箱

# 邮件内容
subject = "定时发送的邮件"
body = "这是一封定时发送的邮件。"

# SMTP服务器配置(以QQ邮箱为例)
smtp_server = "smtp.qq.com"
smtp_port = 465
# 定时发送时间,例如每天早上8点(根据你的时区调整)
target_time = datetime.strptime("08:00:00", "%H:%M:%S").time()

def send_email():
    # 创建MIME邮件对象
    message = MIMEMultipart()
    message["From"] = sender_email
    message["To"] = receiver_email
    message["Subject"] = subject
    # 添加邮件正文
    message.attach(MIMEText(body, 'plain'))
    # 连接到SMTP服务器并使用SSL加密
    server = smtplib.SMTP_SSL(smtp_server, smtp_port)
    # 登录SMTP服务器
    server.login(sender_email, sender_password)
    # 发送邮件
    server.sendmail(sender_email, receiver_email, message.as_string())
    print("邮件已发送。")
    # 关闭服务器连接
    server.quit()
    
def run_at_specific_time():
    while True:
        # 获取当前时间
        now = datetime.now()
        current_time = now.time()
        # 如果当前时间等于目标时间,则发送邮件
        if current_time >= target_time and current_time < target_time + time.timedelta(minutes=1):
            send_email()
            # 为了避免在一分钟内重复发送,休眠60秒
            time.sleep(60)
        else:
            # 每隔60秒检查一次时间
            time.sleep(60)
            
# 运行定时任务
run_at_specific_time()

在运行脚本之前,确保信息已经正确填写:

  • sender_email: 发送者邮箱地址
  • sender_password: 发送者邮箱密码或SMTP授权码(某些邮箱服务商需要生成一个授权码用于第三方登录)
  • receiver_email: 接收者邮箱地址
  • smtp_serversmtp_port: 你的邮箱服务商的SMTP服务器地址和端口
  • target_time: 希望脚本执行发送邮件的时间

注意:

  • 在使用之前,确保已经安装了Python,并且安装了smtplibemail库(这些是Python标准库,通常不需要单独安装)。
  • 脚本中的run_at_specific_time函数将无限循环检查当前时间,并在设定的时间发送邮件。它不会考虑日期的变化,因此如果你需要每天发送邮件,你需要考虑日期的变化,并相应地修改脚本。
  • 为了保护你的邮箱密码,建议不要将密码直接硬编码在脚本中,可以使用环境变量或其他安全方式来存储敏感信息。
  • 如果你的SMTP服务器不支持SSL,请使用smtplib.SMTP()代替smtplib.SMTP_SSL(),并在连接后使用server.starttls()来启用TLS加密。

3. 自动填表

以下是一个用 Pandas 库自动填充 CSV文件的脚本。假设我们有一个 CSV文件,它有两列:NameAge,我们将自动填充一些数据。

首先,确保你已经安装了 Pandas 库。如果没有安装,可以使用以下命令安装:

bash 复制代码
pip install pandas 

以下是填充 CSV文件的脚本示例:

python 复制代码
import pandas as pd
from random import randint, choice
from string import ascii_uppercase

# 定义要填充的数据量
num_entries = 10

# 创建一个空的DataFrame
df = pd.DataFrame(columns=['Name', 'Age'])

# 生成随机数据并填充DataFrame
for _ in range(num_entries):
    # 随机生成姓名,例如:'PersonABC'
    name = 'Person' + ''.join(choice(ascii_uppercase) for _ in range(3))
    # 随机生成年龄,例如:18至65岁
    age = randint(18, 65)
    # 添加到DataFrame
    df = df.append({'Name': name, 'Age': age}, ignore_index=True)

# 输出DataFrame内容
print(df)

# 将DataFrame保存到CSV文件
df.to_csv('filled_table.csv', index=False)

这个脚本做了以下几件事情:

  1. 导入所需的库。
  2. 定义要生成多少条数据。
  3. 创建一个空的 DataFrame,其中包含我们想要填充的列。
  4. 在一个循环中,生成随机的姓名和年龄,并将它们添加到 DataFrame 中。
  5. 打印 DataFrame 的内容。
  6. 将 DataFrame 保存到 CSV文件。

运行这个脚本后,你将在当前目录下得到一个名为filled_table.csv的文件,其中包含随机生成的姓名和年龄数据。

相关推荐
郭庆汝4 小时前
pytorch、torchvision与python版本对应关系
人工智能·pytorch·python
思则变7 小时前
[Pytest] [Part 2]增加 log功能
开发语言·python·pytest
漫谈网络8 小时前
WebSocket 在前后端的完整使用流程
javascript·python·websocket
try2find9 小时前
安装llama-cpp-python踩坑记
开发语言·python·llama
博观而约取10 小时前
Django ORM 1. 创建模型(Model)
数据库·python·django
精灵vector12 小时前
构建专家级SQL Agent交互
python·aigc·ai编程
Zonda要好好学习12 小时前
Python入门Day2
开发语言·python
Vertira12 小时前
pdf 合并 python实现(已解决)
前端·python·pdf
太凉12 小时前
Python之 sorted() 函数的基本语法
python
项目題供诗12 小时前
黑马python(二十四)
开发语言·python