【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的文件,其中包含随机生成的姓名和年龄数据。

相关推荐
一点媛艺2 小时前
Kotlin函数由易到难
开发语言·python·kotlin
魔道不误砍柴功3 小时前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
_.Switch3 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
测开小菜鸟4 小时前
使用python向钉钉群聊发送消息
java·python·钉钉
萧鼎6 小时前
Python并发编程库:Asyncio的异步编程实战
开发语言·数据库·python·异步
学地理的小胖砸6 小时前
【一些关于Python的信息和帮助】
开发语言·python
疯一样的码农6 小时前
Python 继承、多态、封装、抽象
开发语言·python
Python大数据分析@6 小时前
python操作CSV和excel,如何来做?
开发语言·python·excel
黑叶白树6 小时前
简单的签到程序 python笔记
笔记·python
Shy9604186 小时前
Bert完形填空
python·深度学习·bert