timmy / 使用 subprocess 執行系統指令
0 likes
0 forks
1 files
Last active 9 months ago
subprocess 模組可用於執行系統指令、與外部程式互動,適用於自動化腳本、批次處理與系統管理等應用。
| 1 | import subprocess |
| 2 | |
| 3 | # 執行系統指令並獲取輸出 |
| 4 | result = subprocess.run(["ls", "-l"], capture_output=True, text=True) |
| 5 | |
| 6 | # 顯示執行結果 |
| 7 | print("命令輸出:") |
| 8 | print(result.stdout) |
| 9 | |
| 10 | # 檢查是否執行成功 |
timmy / 使用 gc 模組進行垃圾回收管理
0 likes
0 forks
1 files
Last active 9 months ago
gc 模組提供手動管理 Python 垃圾回收(Garbage Collection)的方法,例如調試記憶體洩漏、強制回收、調整閾值等,適用於長時間執行的應用或記憶體優化。
| 1 | import gc |
| 2 | |
| 3 | class CircularReference: |
| 4 | def __init__(self): |
| 5 | self.ref = self # 建立循環引用 |
| 6 | |
| 7 | # 建立一個有循環引用的物件 |
| 8 | obj = CircularReference() |
| 9 | |
| 10 | # 檢查物件是否被垃圾回收 |
timmy / 使用 pickle 進行物件序列化與反序列化
0 likes
0 forks
1 files
Last active 9 months ago
pickle 模組可將 Python 物件轉換為二進位格式(序列化),並存儲到檔案或傳輸,之後可還原為原始物件(反序列化),適用於暫存數據、跨進程通訊或模型儲存。
| 1 | import pickle |
| 2 | |
| 3 | # 定義要序列化的物件(字典) |
| 4 | data = { |
| 5 | "name": "Timmy", |
| 6 | "age": 30, |
| 7 | "skills": ["Python", "Docker", "JavaScript"] |
| 8 | } |
| 9 | |
| 10 | # 將物件序列化並存入檔案 |
timmy / 使用 shutil 進行檔案與目錄操作
0 likes
0 forks
1 files
Last active 9 months ago
shutil 模組提供高級的檔案與目錄管理功能,包括複製、移動、壓縮與刪除,適用於備份、部署與自動化檔案管理。
| 1 | import shutil |
| 2 | import os |
| 3 | |
| 4 | # 定義來源與目標 |
| 5 | source_file = "example.txt" |
| 6 | destination_dir = "backup/" |
| 7 | destination_file = os.path.join(destination_dir, source_file) |
| 8 | |
| 9 | # 確保目標目錄存在 |
| 10 | os.makedirs(destination_dir, exist_ok=True) |
timmy / 使用 multiprocessing.Pipe 進行進程間通訊
0 likes
0 forks
1 files
Last active 9 months ago
multiprocessing.Pipe 允許 Python 進程之間傳遞資料,適用於需要高效能、雙向通訊的場景,如併發運算或分佈式處理。
| 1 | from multiprocessing import Process, Pipe |
| 2 | |
| 3 | def worker(conn): |
| 4 | conn.send("Hello from child process") # 傳送訊息 |
| 5 | msg = conn.recv() # 接收訊息 |
| 6 | print(f"Child received: {msg}") |
| 7 | conn.close() |
| 8 | |
| 9 | if __name__ == "__main__": |
| 10 | parent_conn, child_conn = Pipe() # 建立 Pipe 雙向通道 |
timmy / 使用 traceback 來捕捉與記錄異常
0 likes
0 forks
1 files
Last active 9 months ago
traceback 模組可用於捕捉、格式化和記錄 Python 例外發生時的詳細資訊,有助於錯誤診斷與日誌記錄。
| 1 | import traceback |
| 2 | |
| 3 | def faulty_function(): |
| 4 | return 1 / 0 # 這將觸發 ZeroDivisionError |
| 5 | |
| 6 | try: |
| 7 | faulty_function() |
| 8 | except Exception as e: |
| 9 | error_message = f"Exception occurred: {str(e)}" |
| 10 | stack_trace = traceback.format_exc() |
timmy / 使用 addaudithook 監聽 Python 審計事件
0 likes
0 forks
1 files
Last active 9 months ago
addaudithook 可用來監聽 Python 內部的安全性相關事件,例如模組導入、檔案存取或執行系統命令,可用於安全監控、日誌記錄或限制不安全的操作。
| 1 | import sys |
| 2 | |
| 3 | def audit_hook(event, args): |
| 4 | print(f"Audit event: {event}, Arguments: {args}") |
| 5 | |
| 6 | # 註冊審計鉤子 |
| 7 | sys.addaudithook(audit_hook) |
| 8 | |
| 9 | # 觸發一些事件 |
| 10 | open("test.txt", "w").write("Hello") # 檔案寫入事件 |
timmy / 讀取 .env 環境變數
0 likes
0 forks
1 files
Last active 9 months ago
使用 dotenv 套件從 .env 檔案載入環境變數,適用於配置 API 金鑰、資料庫連線等設定,避免將敏感資訊直接寫入程式碼。
| 1 | import os |
| 2 | from pathlib import Path |
| 3 | from dotenv import load_dotenv |
| 4 | |
| 5 | BASE_DIR = Path(__file__).resolve().parent |
| 6 | ENV_PATH = BASE_DIR.parent / "config" / ".env" |
| 7 | |
| 8 | load_dotenv(ENV_PATH) |
| 9 | |
| 10 | # 讀取環境變數 |
timmy / Python 字串格式化
0 likes
0 forks
1 files
Last active 9 months ago
Python 提供多種字串格式化方法,f-string(Python 3.6+)更直觀且效能較佳,而 str.format() 適用於較舊版本。這些方法常用於動態組合字串,如建立 URL、日誌輸出或命令構造。
| 1 | url = f"http://localhost:{args.port}" |
| 2 | |
| 3 | url = "http://localhost:{}".format(args.port) |