最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文詳解8個Python自動化腳本讓你告別重復(fù)勞動

 更新時間:2026年01月09日 08:33:03   作者:ServBay  
AI的發(fā)展越來越厲害,所以很多人也習(xí)慣把任務(wù)直接丟給AI,但 AI 在處理自動化任務(wù)時有時候還會不穩(wěn)定,有些還要收費,而Python 一樣可以完成一些簡單的自動化任務(wù),本文給大家介紹了8個Python自動化腳本讓你告別重復(fù)勞動,需要的朋友可以參考下

AI的發(fā)展越來越厲害,所以很多人也習(xí)慣把任務(wù)直接丟給AI。但 AI 在處理自動化任務(wù)時有時候還會不穩(wěn)定,有些還要收費。對于需要每天定時運行、處理大量文件或監(jiān)控系統(tǒng)狀態(tài)的任務(wù),依靠 AI 每次生成結(jié)果容易出現(xiàn)幻覺偏差。

AI很好,但其實有時候殺雞沒必要用牛刀。Python 一樣可以完成一些簡單的自動化任務(wù)。

在寫 Python 之前,要確保 Python 的環(huán)境已經(jīng)準(zhǔn)備好。

推薦使用 ServBay 來管理開發(fā)環(huán)境,它支持一鍵安裝 Python 環(huán)境,覆蓋了從半只腳踏進棺材板的 Python 2.7 到Python 3.5 乃至最新的 Python 3.14 版本。而且這些版本可以同時并存,不需要手動去配置環(huán)境變量,也不用擔(dān)心弄亂系統(tǒng)的默認配置。裝好就能用,一分鐘就能搞定。

有了穩(wěn)定的環(huán)境,下面分享幾個在實際工作中常用的自動化腳本模式。

自動重試機制:讓網(wǎng)絡(luò)請求更健壯

寫爬蟲或調(diào)用 API 時,網(wǎng)絡(luò)波動是常態(tài)。與其在每個請求處都寫一遍 try-except,不如把重試邏輯封裝起來。專業(yè)的腳本不會因為一次超時就崩潰。

import time
import requests
from requests.exceptions import RequestException

def fetch_with_retry(url, max_retries=3, pause=2):
    """
    帶有自動重試機制的GET請求
    """
    for attempt in range(max_retries):
        try:
            # 設(shè)置超時是必須的,防止程序無限掛起
            response = requests.get(url, timeout=10)
            response.raise_for_status() # 如果狀態(tài)碼不是200,拋出異常
            return response
        except RequestException as e:
            print(f"請求失敗 (嘗試 {attempt + 1}/{max_retries}): {e}")
            if attempt == max_retries - 1:
                raise # 最后一次嘗試也失敗,拋出異常
            time.sleep(pause)

# 使用示例
try:
    data = fetch_with_retry("https://api.github.com")
    print(f"請求成功,狀態(tài)碼: {data.status_code}")
except RequestException:
    print("重試多次后依然失敗,請檢查網(wǎng)絡(luò)或目標(biāo)服務(wù)。")

它將網(wǎng)絡(luò)不穩(wěn)定的偶發(fā)故障在代碼層面消化。最大的好處是防止腳本因為一次微小的網(wǎng)絡(luò)抖動就全盤崩潰,真正實現(xiàn)了“無人值守”運行,特別適合夜間批量任務(wù)。

依據(jù)文件內(nèi)容重命名

有時候文件名沒有及時修改,就不知道這個文件到底是什么了。

但一個個打開看又非?;〞r間,我們就可以寫個腳本,讓它讀取內(nèi)容并重命名。這個邏輯常用于處理發(fā)票、日志或自動生成的報告。

import os

TARGET_DIR = "./reports"

def clean_filename(text):
    # 去除文件名中的非法字符
    return "".join(c if c.isalnum() else "_" for c in text)[:50]

for filename in os.listdir(TARGET_DIR):
    full_path = os.path.join(TARGET_DIR, filename)
    
    # 確保只處理文件
    if os.path.isfile(full_path):
        try:
            with open(full_path, "r", encoding='utf-8') as f:
                # 讀取第一行作為新文件名
                first_line = f.readline().strip()
                
            if first_line:
                new_name = clean_filename(first_line) + ".txt"
                new_path = os.path.join(TARGET_DIR, new_name)
                
                # 防止覆蓋已存在的文件
                if not os.path.exists(new_path):
                    os.rename(full_path, new_path)
                    print(f"重命名: {filename} -> {new_name}")
        except Exception as e:
            print(f"無法處理文件 {filename}: {e}")

解決了文件名無意義(如 scan_001.txt)的痛點。腳本直接讀取文件核心內(nèi)容來命名,檢索文件時效率很高,不再需要逐個打開確認。

清理長期未訪問的僵尸文件

磁盤空間總是莫名其妙變少,多半是因為那些下載后就再沒打開過的臨時文件。這個腳本能清理長期沒有訪問過的文件,它是依據(jù)最后訪問時間來運行。

import os
import time

WATCH_DIR = "/path/to/cleanup"
EXPIRY_DAYS = 180 # 6個月未訪問則刪除
current_time = time.time()

for filename in os.listdir(WATCH_DIR):
    filepath = os.path.join(WATCH_DIR, filename)
    
    if os.path.isfile(filepath):
        # 獲取最后訪問時間 (atime)
        last_access_time = os.path.getatime(filepath)
        
        # 計算時間差
        if current_time - last_access_time > (EXPIRY_DAYS * 86400):
            try:
                os.remove(filepath)
                print(f"已刪除陳舊文件: {filename}")
            except OSError as e:
                print(f"刪除失敗: {e}")

基于“訪問時間”而非“創(chuàng)建時間”判斷,這非常關(guān)鍵,因為它能精準(zhǔn)識別那些真正不再需要的文件。它就像一個隱形的清潔工,防止磁盤空間被無用的臨時數(shù)據(jù)悄悄吃光。

監(jiān)控并查殺高負載僵尸進程

有些 Python 腳本(尤其是涉及多進程或機器學(xué)習(xí)任務(wù)的)在意外退出后會留下孤兒進程,占用大量 CPU。手動打開活動監(jiān)視器查找太慢,直接用腳本自檢。

import psutil

# 設(shè)定閾值:CPU占用超過80%且進程名為python
CPU_THRESHOLD = 80.0
PROCESS_NAME = "python"

for proc in psutil.process_iter(['pid', 'name', 'cpu_percent']):
    try:
        # psutil獲取cpu_percent通常需要interval,這里取瞬時值可能需要兩次調(diào)用或結(jié)合實際場景調(diào)整
        # 在腳本循環(huán)監(jiān)控中更為有效
        if proc.info['name'] and PROCESS_NAME in proc.info['name'].lower():
            if proc.info['cpu_percent'] > CPU_THRESHOLD:
                print(f"檢測到高負載僵尸進程 PID: {proc.info['pid']} (CPU: {proc.info['cpu_percent']}%)")
                proc.kill()
                print("已終止進程。")
    except (psutil.NoSuchProcess, psutil.AccessDenied):
        pass

這是一種主動防御機制。它解決了長時間運行腳本可能導(dǎo)致的內(nèi)存泄漏或死循環(huán)問題,避免了因單個失控進程拖慢整個系統(tǒng),省去了你手動打開活動監(jiān)視器排查的時間。

操作前的后悔藥:自動備份

在對配置文件或關(guān)鍵數(shù)據(jù)進行寫入操作前,備份是必須的。但往往都是忘記了備份。那就把自動化備份交給Python吧。

import shutil
import time
import os

def safe_backup(filepath):
    if not os.path.exists(filepath):
        print(f"文件不存在: {filepath}")
        return

    # 生成帶時間戳的備份文件名
    timestamp = time.strftime("%Y%m%d_%H%M%S")
    backup_path = f"{filepath}.{timestamp}.bak"
    
    try:
        shutil.copy2(filepath, backup_path)
        print(f"備份已創(chuàng)建: {backup_path}")
    except IOError as e:
        print(f"備份失敗: {e}")
        raise # 備份失敗則應(yīng)該中斷后續(xù)操作

# 使用場景:修改配置前
config_file = "app_config.yaml"
safe_backup(config_file)
# 此處執(zhí)行寫入操作...

執(zhí)執(zhí)行任何破壞性操作(如覆蓋、寫入)前強制留底,這是生產(chǎn)環(huán)境中最基本的安全法則,確保錯誤發(fā)生時能瞬間回滾。

腳本運行結(jié)束后的系統(tǒng)通知

很多腳本一跑就是半小時,你不可能一直盯著控制臺。讓腳本跑完后彈窗通知你,是提升工作體驗的小細節(jié)。

import platform
import os

def send_notification(title, text):
    system_type = platform.system()
    
    if system_type == "Darwin": # macOS
        # 使用 AppleScript 調(diào)用通知
        cmd = f"""osascript -e 'display notification "{text}" with title "{title}"'"""
        os.system(cmd)
    elif system_type == "Linux":
        # Linux 通常使用 notify-send
        cmd = f"""notify-send "{title}" "{text}" """
        os.system(cmd)
    else:
        print(f"通知: [{title}] {text}")

# 模擬長時間任務(wù)
import time
time.sleep(2)
send_notification("任務(wù)完成", "數(shù)據(jù)處理腳本已執(zhí)行完畢。")

開發(fā)者不需要盯著黑底白字的控制臺發(fā)呆,可以將等待腳本結(jié)束的垃圾時間轉(zhuǎn)化為可自由支配的時間,任務(wù)完成了它會主動找你。

輕量級數(shù)據(jù)采集

當(dāng)你需要從網(wǎng)頁上抓取特定字段(如價格、標(biāo)題)并整理成表格時,Python 是最高效的工具。

import requests
from bs4 import BeautifulSoup
import csv

def scrape_data(url, output_file):
    # 偽裝 User-Agent 防止被簡單的反爬攔截
    headers = {'User-Agent': 'Mozilla/5.0'}
    
    try:
        response = requests.get(url, headers=headers)
        soup = BeautifulSoup(response.content, 'html.parser')
        
        # 假設(shè)我們要抓取文章列表中的標(biāo)題和鏈接
        articles = soup.find_all('article')
        data_rows = []
        
        for article in articles:
            title_tag = article.find('h2')
            if title_tag and title_tag.a:
                title = title_tag.a.text.strip()
                link = title_tag.a['href']
                data_rows.append([title, link])
        
        # 寫入CSV
        with open(output_file, 'w', newline='', encoding='utf-8') as f:
            writer = csv.writer(f)
            writer.writerow(['標(biāo)題', '鏈接'])
            writer.writerows(data_rows)
            
        print(f"成功抓取 {len(data_rows)} 條數(shù)據(jù)并保存至 {output_file}")
        
    except Exception as e:
        print(f"抓取過程中出錯: {e}")

# 示例調(diào)用
# scrape_data("http://example-blog.com", "results.csv")

將復(fù)制粘貼動作轉(zhuǎn)化為結(jié)構(gòu)化數(shù)據(jù)流。相比人工,它能以毫秒級的速度處理成百上千個頁面,且生成的數(shù)據(jù)格式(如 CSV)統(tǒng)一規(guī)整,直接可用。你就說方便不方便。

自動化文件歸類

我不知道你的電腦怎么樣,但我的下載文件夾是最亂的地方。而這個腳本可以根據(jù)文件后綴,自動將文件移動到對應(yīng)的分類文件夾中。不用自己一個個用手拖。

import os
import shutil
from pathlib import Path

SOURCE_DIR = Path("/Users/username/Downloads/MixedData")
DEST_DIR = Path("/Users/username/Documents/Sorted")

def organize_files():
    if not SOURCE_DIR.exists():
        return

    for file_path in SOURCE_DIR.iterdir():
        if file_path.is_file():
            # 獲取擴展名,例如 .pdf
            ext = file_path.suffix.lower()
            
            if ext: # 忽略無后綴文件
                # 去掉點號,作為文件夾名,例如 pdf
                folder_name = ext[1:].upper() + "_Files"
                target_folder = DEST_DIR / folder_name
                
                # 創(chuàng)建目標(biāo)文件夾
                target_folder.mkdir(parents=True, exist_ok=True)
                
                # 移動文件
                try:
                    shutil.move(str(file_path), str(target_folder / file_path.name))
                    print(f"移動: {file_path.name} -> {folder_name}")
                except shutil.Error as e:
                    print(f"移動文件出錯: {e}")

if __name__ == "__main__":
    organize_files()

文件也有收納師,還是免費的。它利用文件擴展名這一最基礎(chǔ)的元數(shù)據(jù),瞬間將混亂的下載目錄變得井井有條,極大地減少了人工整理文件的認知負擔(dān)。

總結(jié)

這些腳本并不復(fù)雜,但它們構(gòu)成了自動化工作流的基礎(chǔ)。從環(huán)境搭建開始,使用 ServBay 解決版本共存的痛點,再配合這些穩(wěn)健的代碼邏輯,就可以把大量耗時的重復(fù)勞動交給機器。真正的程序員不是打字最快的人,而是懂得如何讓代碼替自己工作的人。

以上就是一文詳解8個Python自動化腳本讓你告別重復(fù)勞動的詳細內(nèi)容,更多關(guān)于Python自動化腳本告別重復(fù)勞動的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python 基于win32com客戶端實現(xiàn)Excel操作的詳細過程

    Python 基于win32com客戶端實現(xiàn)Excel操作的詳細過程

    這篇文章主要介紹了Python 基于win32com客戶端實現(xiàn)Excel操作的詳細過程,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • 最簡單的matplotlib安裝教程(小白)

    最簡單的matplotlib安裝教程(小白)

    這篇文章主要介紹了最簡單的matplotlib安裝教程(小白),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 如何通過Flask的request對象獲取url

    如何通過Flask的request對象獲取url

    這篇文章主要介紹了如何通過Flask的request對象獲取url問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Python實現(xiàn)自動登錄百度空間的方法

    Python實現(xiàn)自動登錄百度空間的方法

    這篇文章主要介紹了Python實現(xiàn)自動登錄百度空間的方法,涉及Python的http請求發(fā)送、獲取響應(yīng)、cookie操作等相關(guān)技巧,需要的朋友可以參考下
    2017-06-06
  • 關(guān)于python tushare Tkinter構(gòu)建的簡單股票可視化查詢系統(tǒng)(Beta v0.13)

    關(guān)于python tushare Tkinter構(gòu)建的簡單股票可視化查詢系統(tǒng)(Beta v0.13)

    這篇文章主要介紹了python tushare Tkinter構(gòu)建的簡單股票可視化查詢系統(tǒng)(Beta v0.13),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • 使用Python從零打造一個拖拽式表單設(shè)計器

    使用Python從零打造一個拖拽式表單設(shè)計器

    你是否曾經(jīng)有過這樣的需求:想快速設(shè)計一個表單界面,但又不想手動計算每個控件的坐標(biāo)和尺寸?本文將帶你從零實現(xiàn)一個完整的?拖拽式表單設(shè)計器,需要的朋友可以參考下
    2026-02-02
  • 基于注解實現(xiàn) SpringBoot 接口防刷的方法

    基于注解實現(xiàn) SpringBoot 接口防刷的方法

    這篇文章主要介紹了基于注解實現(xiàn) SpringBoot 接口防刷的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 使用matplotlib庫實現(xiàn)圖形局部數(shù)據(jù)放大顯示的實踐

    使用matplotlib庫實現(xiàn)圖形局部數(shù)據(jù)放大顯示的實踐

    本文主要介紹了使用matplotlib庫實現(xiàn)圖形局部數(shù)據(jù)放大顯示的實踐,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Python中字典(dict)合并的四種方法總結(jié)

    Python中字典(dict)合并的四種方法總結(jié)

    在Python中將字典(dict)進行合并操作,是一個比較常見的問題。下面這篇文章主要給大家總結(jié)介紹了關(guān)于Python中字典(dict)合并的四種方法,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • python安裝第三方庫如xlrd的方法

    python安裝第三方庫如xlrd的方法

    這篇文章主要介紹了python安裝第三方庫如xlrd的方法,本文通過兩種方法給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10

最新評論

衡水市| 曲沃县| 柯坪县| 台北县| 尚义县| 巢湖市| 孝感市| 新安县| 鄄城县| 五河县| 大英县| 丰台区| 洛隆县| 中方县| 桃江县| 晋州市| 铜山县| 类乌齐县| 柘荣县| 沾益县| 甘南县| 桦川县| 光山县| 宜川县| 道真| 万安县| 东阳市| 焦作市| 平湖市| 尤溪县| 云和县| 定边县| 荣成市| 黑龙江省| 台北县| 禄丰县| 衡南县| 桦川县| 绥江县| 潞西市| 瓮安县|