提升工作效率的17个Python自动化脚本(上篇)

探索17个使用Python进行工作自动化的脚本,提高工作效率!

原文标题:独家 | 17个可以用于工作自动化的最佳Python脚本(上集)

原文作者:数据派THU

冷月清谈:

本文分享了17个能够通过Python脚本实现工作自动化的工具,这些脚本针对不同领域的自动化需求,从文件管理、网页抓取、文本处理,到电子邮件处理和Excel操作等方方面面。在第一篇中,我们涵盖了文件管理、网页抓取、文本处理、电子邮件自动化、Excel电子表格、数据库交互、社交媒体自动化、系统任务管理和图像编辑等九个方面的实用脚本。这些脚本都具备简单易用、功能强大的特点,大大减少了手动操作,提高了工作效率,适合开发人员、数据分析师及任何希望简化工作流程的人。文章最后指出,自动化不仅能省时省力,也能降低错误发生的风险。

怜星夜思:

1、你认为自动化脚本在日常工作中最大的优势是什么?
2、你试过使用Python进行工作自动化吗?效果如何?
3、你最想用Python自动化处理哪些日常任务?

原文内容

作者:Abdul Hannan Hassan
翻译:付雯欣
校对:赵茹萱

本文约5000字,建议阅读10分钟

我们将通过上下两个篇章为您介绍17个能够自动执行各种任务并提高工作效率Python脚本及其代码。


您是否厌倦了在日常工作中做那些重复性的任务?简单但多功能的Python脚本可以解决您的问题。 

我们将通过上下两个篇章为您介绍17个能够自动执行各种任务并提高工作效率Python脚本及其代码。无论您是开发人员、数据分析师,还是只是希望简化工作流程的人,这些脚本都能满足您的需求。

引言


Python是一种流行的编程语言,以其简单性和可读性而闻名。因其能够提供大量的库和模块,它成为了自动化各种任务的绝佳选择。让我们进入自动化的世界,探索17个可以简化工作并节省时间精力的Python脚本。

目录(上篇)


1.自动化文件管理
2.使用Python进行网页抓取
3.文本处理和操作
4.电子邮件自动化
5.自动化Excel电子表格
6.与数据库交互
7.社交媒体自动化
8.自动化系统任务
9.自动化图像编辑

1.自动化文件管理


1.1 对目录中的文件进行排序


```
# Python script to sort files in a directory by their extension
import os
fromshutil import move
def sort_files(directory_path):
for filename in os.listdir(directory_path):
if os.path.isfile(os.path.join(directory_path, filename)):
file_extension = filename.split('.')[-1]
destination_directory = os.path.join(directory_path, file_extension)
if not os.path.exists(destination_directory):
os.makedirs(destination_directory)
move(os.path.join(directory_path, filename), os.path.join(destination_directory, filename))
```

说明:

此Python脚本根据文件扩展名将文件分类到子目录中,以组织目录中的文件。它识别文件扩展名并将文件移动到适当的子目录。这对于整理下载文件夹或组织特定项目的文件很有用。

1.2 删除空文件夹


```
# Python script to remove empty folders in a directory
import os
def remove_empty_folders(directory_path):
for root, dirs, files in os.walk(directory_path, topdown=False):
for folder in dirs:
folder_path = os.path.join(root, folder)
if not os.listdir(folder_path):
os.rmdir(folder_path)
```

说明:

此Python脚本可以搜索并删除指定目录中的空文件夹。它可以帮助您在处理大量数据时保持文件夹结构的干净整洁。

1.3 重命名多个文件


```
# Python script to rename multiple files in a directory
import os
def rename_files(directory_path, old_name, new_name):
for filename in os.listdir(directory_path):
if old_name in filename:
new_filename = filename.replace(old_name, new_name)
os.rename(os.path.join(directory_path,filename),os.path.join(directory_path, new_filename))
```

说明:

此Python脚本允许您同时重命名目录中的多个文件。它将旧名称和新名称作为输入,并将所有符合指定条件的文件的旧名称替换为新名称。

2. 使用Python进行网页抓取


2.1从网站提取数据


```
# Python script for web scraping to extract data from a website
import requests
from bs4 import BeautifulSoup
def scrape_data(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# Your code here to extract relevant data from the website
```

说明:

此Python脚本利用requests和BeautifulSoup库从网站上抓取数据。它获取网页内容并使用BeautifulSoup解析HTML。您可以自定义脚本来提取特定数据,例如标题、产品信息或价格。

2.2从网站提取数据


```
# Python script to download images in bulk from a website
import requests
def download_images(url, save_directory):
response = requests.get(url)
if response.status_code == 200:
images = response.json() # Assuming the API returns a JSON array of image URLs
for index, image_url in enumerate(images):
image_response = requests.get(image_url)
if image_response.status_code == 200:
with open(f"{save_directory}/image_{index}.jpg", "wb") as f:
f.write(image_response.content)
```

说明:

此Python脚本旨在从网站批量下载图像。它为网站提供返回图像URL数组的JSON API。然后,该脚本循环访问URL并下载图像,并将其保存到指定目录。

2.3自动提交表单


```
# Python script to automate form submissions on a website
import requests
def submit_form(url, form_data):
response = requests.post(url, data=form_data)
if response.status_code == 200:
# Your code here to handle the response after form submission
```

说明:

此Python脚本通过发送带有表单数据的POST请求来自动在网站上提交表单。您可以通过提供URL和要提交的必要表单数据来自定义脚本。

3. 文本处理和操作


3.1计算文本文件中的字数


```
# Python script to count words in a text file
def count_words(file_path):
with open(file_path, 'r') as f:
text = f.read()
word_count = len(text.split())
return word_count
```

说明:

此Python脚本读取一个文本文件并计算它包含的单词数。它可用于快速分析文本文档的内容或跟踪写作项目中的字数情况。

3.2从网站提取数据


```
# Python script to find and replace text in a file
def find_replace(file_path, search_text, replace_text):
with open(file_path, 'r') as f:
text = f.read()
modified_text = text.replace(search_text, replace_text)
with open(file_path, 'w') as f:
f.write(modified_text)
```

说明:

此Python脚本能搜索文件中的特定文本并将其替换为所需的文本。它对于批量替换某些短语或纠正大型文本文件中的错误很有帮助。

3.3生成随机文本


```
# Python script to generate random text
import random
import string
def generate_random_text(length):
letters = string.ascii_letters + string.digits + string.punctuation
random_text = ''.join(random.choice(letters) for i in range(length))
return random_text
```

说明:

此Python脚本生成指定长度的随机文本。它可以用于测试和模拟,甚至可以作为创意写作的随机内容来源。

4.电子邮件自动化


4.1发送个性化电子邮件



# Python script to send personalized emails to a list of recipients
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
def send_personalized_email(sender_email, sender_password, recipients, subject, body):
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(sender_email, sender_password)
for recipient_email in recipients:
message = MIMEMultipart()
message['From'] = sender_email
message['To'] = recipient_email
message['Subject'] = subject
message.attach(MIMEText(body, 'plain'))
server.sendmail(sender_email, recipient_email, message.as_string())
server.quit()

说明:

此Python脚本使您能够向收件人列表发送个性化电子邮件。您可以自定义发件人的电子邮件、密码、主题、正文和收件人电子邮件列表。请注意,出于安全原因,您在使用Gmail时应使用应用程序专用密码。

4.2通过电子邮件发送文件附件


```
# Python script to send emails with file attachments
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
def send_email_with_attachment(sender_email,sender_password, recipient_email, subject, body, file_path):
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(sender_email, sender_password)
message = MIMEMultipart()
message['From'] = sender_email
message['To'] = recipient_email
message['Subject'] = subject
message.attach(MIMEText(body, 'plain'))
with open(file_path, "rb") as attachment:
part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', f"attachment; filename= {file_path}")
message.attach(part)
server.sendmail(sender_email, recipient_email, message.as_string())
server.quit()
```

说明:

此 Python 脚本允许您发送带有文件附件的电子邮件。只需提供发件人的电子邮件、密码、收件人的电子邮件、主题、正文以及要附加的文件的路径。


4.3自动邮件提醒


```
# Python script to send automatic email reminders
import smtplib
from email.mime.text import MIMEText
from datetime import datetime, timedelta
def send_reminder_email(sender_email, sender_password, recipient_email, subject, body, reminder_date):
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(sender_email, sender_password)
now = datetime.now()
reminder_date = datetime.strptime(reminder_date, '%Y-%m-%d')
if now.date() == reminder_date.date():
message = MIMEText(body, 'plain')
message['From'] = sender_email
message['To'] = recipient_email
message['Subject'] = subject
server.sendmail(sender_email, recipient_email, message.as_string())
server.quit()
```

说明:

此Python脚本根据指定日期发送自动电子邮件提醒。它对于设置重要任务或事件的提醒非常有用,确保您不会错过最后期限。

5.自动化Excel电子表格


5.1Excel读&写


```
# Python script to read and write data to an Excel spreadsheet
import pandas as pd
def read_excel(file_path):
df = pd.read_excel(file_path)
return df
def write_to_excel(data, file_path):
df = pd.DataFrame(data)
df.to_excel(file_path, index=False)
```

说明:

此Python脚本使用pandas库从Excel电子表格读取数据并将数据写入新的Excel文件。它允许您通过编程处理Excel文件,使数据操作和分析更加高效。

5.2数据分析和可视化


```
# Python script for data analysis and visualization with pandas and matplotlib
import pandas as pd
import matplotlib.pyplot as plt
def analyze_and_visualize_data(data):
# Your code here for data analysis and visualization
pass
```

说明:

此Python脚本使用pandas和matplotlib库来进行数据分析和可视化。它使您能够探索数据集、得出结论并得到数据的可视化表示。


5.3合并多个工作表


```
# Python script to merge multiple Excel sheets into a single sheet
import pandas as pd
def merge_sheets(file_path, output_file_path):
xls = pd.ExcelFile(file_path)
df = pd.DataFrame()
for sheet_name in xls.sheet_names:
sheet_df = pd.read_excel(xls, sheet_name)
df = df.append(sheet_df)
df.to_excel(output_file_path, index=False)
```

说明:

此Python脚本将Excel文件中多个工作表的数据合并到一个工作表中。当您将数据分散在不同的工作表中但想要合并它们以进行进一步分析时,这会很方便。

6.与数据库交互


6.1连接到一个数据库


```
# Python script to connect to a database and execute queries
import sqlite3
def connect_to_database(database_path):
connection = sqlite3.connect(database_path)
return connection
def execute_query(connection, query):
cursor = connection.cursor()
cursor.execute(query)
result = cursor.fetchall()
return result
```

说明:

此Python脚本允许您连接到SQLite数据库并执行查询。您可以使用适当的Python数据库驱动程序将其调整为与其他数据库管理系统(例如MySQL或PostgreSQL)配合使用。


6.2执行SQL查询


```
# Python script to execute SQL queries on a database
import sqlite3
def execute_query(connection, query):
cursor = connection.cursor()
cursor.execute(query)
result = cursor.fetchall()
return result
```

说明:

此Python脚本是在数据库上执行SQL查询的通用函数。您可以将查询作为参数与数据库连接对象一起传递给函数,它将返回查询结果。

6.3数据备份与恢复


```
import shutil
def backup_database(database_path, backup_directory):
shutil.copy(database_path, backup_directory)
def restore_database(backup_path, database_directory):
shutil.copy(backup_path, database_directory)
```

说明:

此Python 脚本允许您创建数据库的备份并在需要时恢复它们。这是预防您的宝贵数据免遭意外丢失的措施。

7.社交媒体自动化


7.1发送个性化电子邮件


```
# Python script to automate posting on Twitter and Facebook
from twython import Twython
import facebook
def post_to_twitter(api_key, api_secret, access_token, access_token_secret, message):
twitter = Twython(api_key, api_secret, access_token, access_token_secret)
twitter.update_status(status=message)
def post_to_facebook(api_key, api_secret, access_token, message):
graph = facebook.GraphAPI(access_token)
graph.put_object(parent_object='me', connection_name='feed', message=message)
```

说明:

此 Python 脚本利用Twython和facebook-sdk库自动在Twitter和Facebook上发布内容。您可以使用它将 Python 脚本中的更新、公告或内容直接共享到您的社交媒体配置文件。


7.2社交媒体自动共享



# Python script to automatically share content on social media platforms
import random
def get_random_content():
# Your code here to retrieve random content from a list or database
pass
def post_random_content_to_twitter(api_key, api_secret, access_token, access_token_secret):
content = get_random_content()
post_to_twitter(api_key, api_secret, access_token, access_token_secret, content)
def post_random_content_to_facebook(api_key, api_secret, access_token):
content = get_random_content()
post_to_facebook(api_key, api_secret, access_token, content)

说明:

此Python 脚本自动在Twitter和Facebook上共享随机内容。您可以对其进行自定义,以从列表或数据库中获取内容并定期在社交媒体平台上共享。

7.3 抓取社交媒体数据


```
# Python script for scraping data from social media platforms
import requests
def scrape_social_media_data(url):
response = requests.get(url)
# Your code here to extract relevant data from the response
```

说明:

此Python脚本执行网页抓取以从社交媒体平台提取数据。它获取所提供URL的内容,然后使用BeautifulSoup等技术来解析HTML并提取所需的数据。

8.自动化系统任务


8.1管理系统进程


```
# Python script to manage system processes
import psutil
def get_running_processes():
return [p.info for p in psutil.process_iter(['pid', 'name', 'username'])]
def kill_process_by_name(process_name):
for p in psutil.process_iter(['pid', 'name', 'username']):
if p.info['name'] == process_name:
p.kill()
```

说明:

此Python 脚本使用 psutil 库来管理系统进程。它允许您检索正在运行的进程列表并通过名称终止特定进程。

8.2使用 Cron 安排任务


```
# Python script to schedule tasks using cron syntax
from crontab import CronTab
def schedule_task(command, schedule):
cron = CronTab(user=True)
job = cron.new(command=command)
job.setall(schedule)
cron.write()
```

说明:

此Python 脚本利用 crontab 库来使用 cron 语法来安排任务。它使您能够定期或在特定时间自动执行特定命令。

8.3自动邮件提醒


```
# Python script to monitor disk space and send an alert if it's low
import psutil
def check_disk_space(minimum_threshold_gb):
disk = psutil.disk_usage('/')
free_space_gb = disk.free / (230) # Convert bytes to GB
if free_space_gb < minimum_threshold_gb:
# Your code here to send an alert (email, notification, etc.)
pass
```

说明:

此Python 脚本监视系统上的可用磁盘空间,并在其低于指定阈值时发送警报。它对于主动磁盘空间管理和防止由于磁盘空间不足而导致潜在的数据丢失非常有用。

9.自动化图像编辑


9.1图像大小调整和裁剪


```
# Python script to resize and crop images
from PIL import Image
def resize_image(input_path, output_path, width, height):
image = Image.open(input_path)
resized_image = image.resize((width, height), Image.ANTIALIAS)
resized_image.save(output_path)
def crop_image(input_path, output_path, left, top, right, bottom):
image = Image.open(input_path)
cropped_image = image.crop((left, top, right, bottom))
cropped_image.save(output_path)
```

说明:

此Python脚本使用Python图像库(PIL)来调整图像大小和裁剪图像。它有助于为不同的显示分辨率或特定目的准备图像。

9.2为图像添加水印


```
# Python script to add watermarks to images
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
def add_watermark(input_path, output_path, watermark_text):
image = Image.open(input_path)
draw = ImageDraw.Draw(image)
font = ImageFont.truetype('arial.ttf', 36)
draw.text((10, 10), watermark_text, fill=(255, 255, 255, 128), font=font)
image.save(output_path)
```

说明:

此Python 脚本向图像添加水印。您可以自定义水印文本、字体和位置,以实现您图像的个性化。

9.3创建图像缩略图

```
# Python script to create image thumbnails
from PIL import Image
def create_thumbnail(input_path, output_path, size=(128, 128)):
image = Image.open(input_path)
image.thumbnail(size)
image.save(output_path)
```

说明:

此Python 脚本从原始图像创建缩略图,这对于生成预览图像或减小图像大小以便更快地在网站上加载非常有用。

结论


以上是本文为您介绍的9个可以用于工作自动化的最佳Python脚本。在下篇中,我们将为您介绍网络自动化数据清理和转换自动化 PDF 操作、自动化GUI、自动化测试自动化云服务财务自动化自然语言处理

自动化不仅可以节省时间和精力,还可以降低出错风险并提高整体生产力。通过自定义和构建这些脚本,您可以创建定制的自动化解决方案来满足您的特定需求。

还等什么呢?立即开始使用Python 实现工作自动化,体验简化流程和提高效率的力量。

编辑:王菁





译者简介





付雯欣,中国人民大学统计学专业硕士研究生在读,数据科学道路上的探索者一枚。小时候梦想做数学家,现在依旧着迷于数据背后的世界。热爱阅读,热爱遛弯儿,不停感受打开生命大门的瞬间。欢迎大家和我一起用概率的视角看世界~

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。


点击文末“阅读原文”加入数据派团队~



转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。



点击“阅读原文”拥抱组织



我觉得最大的优势是提高效率,很多重复性的工作可以用脚本替代,省去大量时间。我以前手动整理文件,真是一个比一个心累!

自动化脚本能减少人为错误的发生,这对于一些精准度要求比较高的工作尤其重要,比如数据分析相关的工作。

我觉得是解放创造力吧!把这些琐事交给脚本处理后,我们可以把更多时间放在更有价值的事情上,比如思考和创新。

我希望能有个脚本自动备份我的工作文件,像每天下班都能自动保存到云端,这样就不会担心数据丢失了。

自动发送邮件的脚本我觉得很不错,工作中需要发送很多部门间的通知,能自动化就太好了,可以节省大量时间!

我想用脚本来自动整理我的照片和文件,尤其是那些下载的文件,常常乱七八糟,感觉用脚本来分类会方便很多。

试过使用Python来处理数据,一开始我觉得挺复杂的,但是后来看了这些脚本之后,感觉简单多了,效果也很好!

我使用过Python做自动化的网页抓取,真的省了不少时间,自动化的处理让我不再需要手动一个一个去提取数据。

是啊,我做过一些自动化处理,比如整理照片,起初感觉不太方便,但慢慢上手之后,真的觉得Python脚本太强大了!