最新動(dòng)態(tài)

Python腳本大師:自動(dòng)化處理重復(fù)任務(wù),提高工作效率

2025-01-27

今天聊聊如何利用Python腳本簡(jiǎn)化日常重復(fù)工作

說(shuō)實(shí)話,我最討厭的就是每天都要重復(fù)做同樣的事情,這不僅浪費(fèi)時(shí)間,還讓人感到厭倦。自從學(xué)會(huì)了用Python編寫腳本后,感覺(jué)整個(gè)人都解放了!下面分享幾個(gè)實(shí)用的小技巧,相信會(huì)讓你的工作效率大大提高。

批量重命名文件

是否遇到過(guò)需要批量更改文件名的情況?比如下載了一大堆照片,想要按照日期重新命名。手動(dòng)修改?那簡(jiǎn)直是噩夢(mèng)。用Python腳本幾秒鐘就能搞定:

import os
from datetime import datetime

# 指定目錄路徑
directory = "C:/Users/YourName/Pictures"
for filename in os.listdir(directory):
    if filename.endswith(".jpg"):  # 只處理jpg文件
        file_path = os.path.join(directory, filename)
        # 獲取文件修改時(shí)間
        mod_time = os.path.getmtime(file_path)
        # 轉(zhuǎn)換為日期時(shí)間格式
        date = datetime.fromtimestamp(mod_time).strftime('%Y%m%d')
        # 新文件名
        new_name = f"{date}_{filename}"
        # 重命名
        os.rename(file_path, os.path.join(directory, new_name))
print("搞定!所有文件已重命名。")

這段代碼會(huì)遍歷指定目錄下的所有jpg文件,然后根據(jù)文件的修改時(shí)間給它們加上日期前綴。比如“IMG001.jpg”就變成了“20230611_IMG001.jpg”。提醒一下,在運(yùn)行這種批量操作的腳本前,最好先備份一下原始文件,以防萬(wàn)一出錯(cuò)還能恢復(fù)。

自動(dòng)化Excel數(shù)據(jù)處理

處理Excel中的數(shù)據(jù)是最煩人的任務(wù)之一,尤其是當(dāng)需要處理多個(gè)表格時(shí)。使用Python的openpyxl庫(kù)可以輕松搞定:

from openpyxl import load_workbook, Workbook

# 打開源Excel文件
wb = load_workbook("source.xlsx")
sheet = wb.active

# 創(chuàng)建新的Excel文件
new_wb = Workbook()
new_sheet = new_wb.active

# 處理數(shù)據(jù)
for row in sheet.iter_rows(min_row=2, values_only=True):
    name, sales = row[0], row[1]
    if sales > 1000:  # 假設(shè)我們只關(guān)心銷售額超過(guò)1000的
        new_sheet.append([name, sales])

# 保存新文件
new_wb.save("processed_data.xlsx")
print("Excel處理完成,結(jié)果已保存到新文件中。")

這個(gè)腳本會(huì)讀取一個(gè)Excel文件,篩選出銷售額超過(guò)1000的記錄,然后把結(jié)果保存到一個(gè)新的Excel文件中。再也不用手動(dòng)篩選數(shù)據(jù)了,簡(jiǎn)直太爽了!

定時(shí)任務(wù)自動(dòng)化

有些工作需要定期執(zhí)行,比如每天下午5點(diǎn)發(fā)送一份工作報(bào)告。與其靠自己記,不如寫個(gè)腳本讓電腦幫你盯著:

import schedule
import time
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

def send_report():
    # 這里是發(fā)送郵件的代碼
    sender = "your_email@example.com"
    receiver = "boss@example.com"
    msg = MIMEMultipart()
    msg['From'] = sender
    msg['To'] = receiver
    msg['Subject'] = "每日工作報(bào)告"
    body = "這是今天的工作報(bào)告內(nèi)容。\n1. 完成了A項(xiàng)目\n2. 開始著手B項(xiàng)目\n3. 解決了C問(wèn)題"
    msg.attach(MIMEText(body, 'plain'))

    try:
        server = smtplib.SMTP('smtp.gmail.com', 587)
        server.starttls()
        server.login(sender, "your_password")
        text = msg.as_string()
        server.sendmail(sender, receiver, text)
        server.quit()
        print("郵件發(fā)送成功!")
    except Exception as e:
        print(f"郵件發(fā)送失?。簕e}")

# 設(shè)置每天下午5點(diǎn)執(zhí)行
schedule.every().day.at("17:00").do(send_report)

while True:
    schedule.run_pending()
    time.sleep(60)  # 每分鐘檢查一次是否有待執(zhí)行的任務(wù)

這個(gè)腳本設(shè)置了一個(gè)定時(shí)任務(wù),每天下午5點(diǎn)自動(dòng)發(fā)送一封郵件。你只需要把它放在后臺(tái)運(yùn)行,就再也不用擔(dān)心忘記發(fā)報(bào)告了。

溫馨提示:使用Gmail的SMTP服務(wù)器時(shí),可能需要在Google賬戶設(shè)置中啟用“不太安全的應(yīng)用訪問(wèn)”?;蛘吒玫姆椒ㄊ鞘褂脩?yīng)用專用密碼。

網(wǎng)絡(luò)數(shù)據(jù)抓取

有時(shí)候我們需要從網(wǎng)站上收集一些數(shù)據(jù),比如監(jiān)控競(jìng)爭(zhēng)對(duì)手的價(jià)格變化。手動(dòng)復(fù)制粘貼?太落后了!來(lái)看看怎么用Python的requestsbeautifulsoup庫(kù)來(lái)自動(dòng)抓取網(wǎng)頁(yè)數(shù)據(jù):

import requests
from bs4 import BeautifulSoup
import csv

url = "https://example.com/products"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

products = []
for item in soup.find_all('div', class_='product'):
    name = item.find('h2').text.strip()
    price = item.find('span', class_='price').text.strip()
    products.append([name, price])

# 保存到CSV文件
with open('products.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerow(['Product Name', 'Price'])
    writer.writerows(products)

print(f"成功抓取了{(lán)len(products)}個(gè)產(chǎn)品信息,并保存到了products.csv文件中。")

這個(gè)腳本會(huì)訪問(wèn)指定的網(wǎng)頁(yè),解析HTML內(nèi)容,提取產(chǎn)品名稱和價(jià)格信息,然后把結(jié)果保存到一個(gè)CSV文件中。你可以根據(jù)具體網(wǎng)站的HTML結(jié)構(gòu)來(lái)調(diào)整解析邏輯。

好了,今天就聊到這兒吧。這些小技巧都是我平時(shí)工作中經(jīng)常用到的,希望對(duì)你也有幫助。記住,編程的關(guān)鍵就是解決實(shí)際問(wèn)題。多練習(xí),多思考如何用代碼來(lái)簡(jiǎn)化你的日常工作,你會(huì)發(fā)現(xiàn)編程其實(shí)挺有趣的。哦對(duì)了,代碼里難免會(huì)有些bug,別灰心,調(diào)試也是提高編程技巧的好方法。加油!