当前位置:   article > 正文

14个Python自动化实战脚本_python自动化脚本

python自动化脚本

1、批量文件重命名神器在工作中,我们常常需要对大量文件进行批量重命名,Python帮你轻松搞定!

  1. import os
  2. def batch_rename(path, prefix='', suffix=''):
  3.     for i, filename in enumerate(os.listdir(path)):
  4.         new_name = f"{prefix}{i:03d}{suffix}{os.path.splitext(filename)[1]}"
  5.         old_file = os.path.join(path, filename)
  6.         new_file = os.path.join(path, new_name)
  7.         os.rename(old_file, new_file)
  8. # 使用示例:
  9. batch_rename('/path/to/your/directory''file_''.txt')

2、自动发送邮件通知告别手动发送,用Python编写定时发送邮件的自动化脚本

  1. import smtplib
  2. from email.mime.text import MIMEText
  3. def send_email(to_addr, subject, content):
  4.     smtp_server = 'smtp.example.com'
  5.     username = 'your-email@example.com'
  6.     password = 'your-password'
  7.     msg = MIMEText(content)
  8.     msg['Subject'= subject
  9.     msg['From'= username
  10.     msg['To'= to_addr
  11.     server = smtplib.SMTP(smtp_server, 587)
  12.     server.starttls()
  13.     server.login(username, password)
  14.     server.sendmail(username, to_addr, msg.as_string())
  15.     server.quit()
  16. # 使用示例:
  17. send_email('receiver@example.com''每日报告提醒''今日报告已生成,请查收。')

3、定时任务自动化执行使用Python调度库,实现定时执行任务的自动化脚本。

  1. import schedule
  2. import time
  3. def job_to_schedule():
  4.     print("当前时间:"time.ctime(), "任务正在执行...")
  5. # 定义每天9点执行任务
  6. schedule.every().day.at("09:00").do(job_to_schedule)
  7. while True:
  8.     schedule.run_pending()
  9.     time.sleep(1)
  10. # 使用示例:
  11. # 运行此脚本后,每天上午9点会自动打印当前时间及提示信息

4、数据库操作自动化简化数据库管理,Python帮你自动化执行CRUD操作。

  1. import sqlite3
  2. def create_connection(db_file):
  3.     conn = None
  4.     try:
  5.         conn = sqlite3.connect(db_file)
  6.         print(f"成功连接到SQLite数据库:{db_file}")
  7.     except Error as e:
  8.         print(e)
  9.     return conn
  10. def insert_data(conn, table_name, data_dict):
  11.     keys = ', '.join(data_dict.keys())
  12.     values = ', '.join(f"'{v}'" for v in data_dict.values())
  13.     sql = f"INSERT INTO {table_name} ({keys}) VALUES ({values});"
  14.     try:
  15.         cursor = conn.cursor()
  16.         cursor.execute(sql)
  17.         conn.commit()
  18.         print("数据插入成功!")
  19.     except sqlite3.Error as e:
  20.         print(e)
  21. # 使用示例:
  22. conn = create_connection('my_database.db')
  23. data = {'name''John Doe''age'30}
  24. insert_data(conn, 'users'data)
  25. # 在适当时候关闭数据库连接
  26. conn.close()

5、网页内容自动化抓取利用BeautifulSoup和requests库,编写Python爬虫获取所需网页信息。

  1. import requests
  2. from bs4 import BeautifulSoup
  3. def fetch_web_content(url):
  4.     response = requests.get(url)
  5.     if response.status_code == 200:
  6.         soup = BeautifulSoup(response.text, 'html.parser')
  7.         # 示例提取页面标题
  8.         title = soup.find('title').text
  9.         return title
  10.     else:
  11.         return "无法获取网页内容"
  12. # 使用示例:
  13. url = 'https://example.com'
  14. web_title = fetch_web_content(url)
  15. print("网页标题:", web_title)

6、数据清洗自动化使用Pandas库,实现复杂数据处理和清洗的自动化。

  1. import pandas as pd
  2. def clean_data(file_path):
  3.     df = pd.read_csv(file_path)
  4.     
  5.     # 示例:处理缺失值
  6.     df.fillna('N/A', inplace=True)
  7.     # 示例:去除重复行
  8.     df.drop_duplicates(inplace=True)
  9.     # 示例:转换列类型
  10.     df['date_column'= pd.to_datetime(df['date_column'])
  11.     return df
  12. # 使用示例:
  13. cleaned_df = clean_data('data.csv')
  14. print("数据清洗完成,已准备就绪!")

7、图片批量压缩用Python快速压缩大量图片以节省存储空间。

  1. from PIL import Image
  2. import os
  3. def compress_images(dir_path, quality=90):
  4.     for filename in os.listdir(dir_path):
  5.         if filename.endswith(".jpg") or filename.endswith(".png"):
  6.             img = Image.open(os.path.join(dir_path, filename))
  7.             img.save(os.path.join(dir_path, f'compressed_{filename}'), optimize=True, quality=quality)
  8. # 使用示例:
  9. compress_images('/path/to/images', quality=80)

8、文件内容查找替换Python脚本帮助你一键在多个文件中搜索并替换指定内容。

  1. import fileinput
  2. def search_replace_in_files(dir_path, search_text, replace_text):
  3.     for line in fileinput.input([f"{dir_path}/*"], inplace=True):
  4.         print(line.replace(search_text, replace_text), end='')
  5. # 使用示例:
  6. search_replace_in_files('/path/to/files''old_text''new_text')

9、日志文件分析自动化通过Python解析日志文件,提取关键信息进行统计分析。

  1. def analyze_log(log_file):
  2.     with open(log_file'r'as f:
  3.         lines = f.readlines()
  4.     error_count = 0
  5.     for line in lines:
  6.         if "ERROR" in line:
  7.             error_count += 1
  8.     print(f"日志文件中包含 {error_count} 条错误记录。")
  9. # 使用示例:
  10. analyze_log('application.log')

10、数据可视化自动化利用Matplotlib库,实现数据的自动图表生成。

  1. import matplotlib.pyplot as plt
  2. import pandas as pd
  3. def visualize_data(data_file):
  4.     df = pd.read_csv(data_file)
  5.     
  6.     # 示例:绘制柱状图
  7.     df.plot(kind='bar', x='category', y='value')
  8.     plt.title('数据分布')
  9.     plt.xlabel('类别')
  10.     plt.ylabel('值')
  11.     plt.show()
  12. # 使用示例:
  13. visualize_data('data.csv')

11、邮件附件批量下载通过Python解析邮件,自动化下载所有附件。

  1. import imaplib
  2. import email
  3. from email.header import decode_header
  4. import os
  5. def download_attachments(email_addr, password, imap_server, folder='INBOX'):
  6.     mail = imaplib.IMAP4_SSL(imap_server)
  7.     mail.login(email_addr, password)
  8.     mail.select(folder)
  9.     result, data = mail.uid('search', None, "ALL")
  10.     uids = data[0].split()
  11.     for uid in uids:
  12.         _, msg_data = mail.uid('fetch', uid, '(RFC822)')
  13.         raw_email = msg_data[0][1].decode("utf-8")
  14.         email_message = email.message_from_string(raw_email)
  15.         for part in email_message.walk():
  16.             if part.get_content_maintype() == 'multipart':
  17.                 continue
  18.             if part.get('Content-Disposition'is None:
  19.                 continue
  20.             
  21.             filename = part.get_filename()
  22.             if bool(filename):
  23.                 file_data = part.get_payload(decode=True)
  24.                 with open(os.path.join('/path/to/download', filename), 'wb'as f:
  25.                     f.write(file_data)
  26.     mail.close()
  27.     mail.logout()
  28. # 使用示例:
  29. download_attachments('your-email@example.com''your-password''imap.example.com')

12、定时发送报告自动化根据数据库或文件内容,自动生成并定时发送日报/周报。

  1. import pandas as pd
  2. import smtplib
  3. from email.mime.text import MIMEText
  4. from email.mime.multipart import MIMEMultipart
  5. def generate_report(sourceto_addr, subject):
  6.     # 假设这里是从数据库或文件中获取数据并生成报告内容
  7.     report_content = pd.DataFrame({"Data": [123], "Info": ["A""B""C"]}).to_html()
  8.     msg = MIMEMultipart()
  9.     msg['From'= 'your-email@example.com'
  10.     msg['To'= to_addr
  11.     msg['Subject'= subject
  12.     msg.attach(MIMEText(report_content'html'))
  13.     server = smtplib.SMTP('smtp.example.com'587)
  14.     server.starttls()
  15.     server.login('your-email@example.com''your-password')
  16.     text = msg.as_string()
  17.     server.sendmail('your-email@example.com'to_addr, text)
  18.     server.quit()
  19. # 使用示例:
  20. generate_report('data.csv''receiver@example.com''每日数据报告')
  21. # 结合前面的定时任务脚本,可实现定时发送功能

13、自动化性能测试使用Python的locust库进行API接口的压力测试。

  1. from locust import HttpUser, task, between
  2. class WebsiteUser(HttpUser):
  3.     wait_time = between(515)  # 定义用户操作之间的等待时间
  4.     @task
  5.     def load_test_api(self):
  6.         response = self.client.get("/api/data")
  7.         assert response.status_code == 200  # 验证返回状态码为200
  8.     @task(3)  # 指定该任务在总任务中的执行频率是其他任务的3
  9.     def post_data(self):
  10.         data = {"key""value"}
  11.         response = self.client.post("/api/submit", json=data)
  12.         assert response.status_code == 201  # 验证数据成功提交后的响应状态码
  13. # 运行Locust命令启动性能测试:
  14. # locust -f your_test_script.py --host=http://your-api-url.com

14、自动化部署与回滚脚本使用Fabric库编写SSH远程部署工具,这里以部署Django项目为例:

  1. from fabric import Connection
  2. def deploy(host_string, user, password, project_path, remote_dir):
  3.     c = Connection(host=host_string, user=user, connect_kwargs={"password": password})
  4.     with c.cd(remote_dir):
  5.         c.run('git pull origin master')  # 更新代码
  6.         c.run('pip install -r requirements.txt')  # 安装依赖
  7.         c.run('python manage.py migrate')  # 执行数据库迁移
  8.         c.run('python manage.py collectstatic --noinput')  # 静态文件收集
  9.         c.run('supervisorctl restart your_project_name')  # 重启服务
  10. # 使用示例:
  11. deploy(
  12.     host_string='your-server-ip',
  13.     user='deploy_user',
  14.     password='deploy_password',
  15.     project_path='/path/to/local/project',
  16.     remote_dir='/path/to/remote/project'
  17. )
  18. # 对于回滚操作,可以基于版本控制系统实现或创建备份,在出现问题时恢复上一版本的部署。

往期推荐:

Python 31条 pip 命令全解析

用 Python 轻松生成艺术二维码

Python从COCO数据集中抽取某类别数据用于训练人工智能模型

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

闽ICP备14008679号