
使用 Python 腳本自動執行任務是開發人員的普遍做法。然而,確保這些腳本在多個系統之間無縫運行可能面臨巨大的挑戰,這主要源自於依賴項管理。 Docker 的價值就在於此,它允許您將 Python 腳本及其相關依賴項封裝在一個可移植的容器中。這確保了腳本在不同環境中的一致執行。在本指南中,我們將概述編寫實用 Python 腳本並在 Docker 容器中執行該腳本的過程。
使用 Docker for Python 的優勢
管理 Python 依賴項很快就會變得繁瑣,尤其是在不同專案需要衝突的軟體包時。 Docker 透過將腳本與其環境捆綁在一起來解決這些問題。這消除了「它在我的機器上可以正常工作」的常見藉口,確保了所有平台上的一致性能。
此外,Docker 還可以防止在全域範圍內安裝大量 Python 套件,從而維護乾淨的開發環境。所有相依性都包含在 Docker 環境中,從而簡化了專案管理。
當您將腳本傳遞給其他使用者或部署時,Docker 簡化了流程。無需繁瑣的安裝說明,只需一個命令即可執行腳本。
建立 Python 腳本
首先,建立一個專案目錄來存放你的 Python 腳本和 Dockerfile。使用以下指令設定目錄:
mkdir docker_file_organizercd docker_file_organizer
接下來,建立一個名為organise_files.py的腳本,該腳本將掃描指定的目錄並根據檔案副檔名對檔案進行分類:
nano organize_files.py
將以下程式碼插入organise_files.py檔案中。此腳本利用內建的os
和shutil
模組動態處理檔案並產生目錄:
import osimport shutilSOURCE_DIR = "/files"def organize_by_extension(directory): try: for fname in os.listdir(directory): path = os.path.join(directory, fname) if os.path.isfile(path): ext = fname.split('.')[-1].lower() if '.' in fname else 'no_extension' dest_dir = os.path.join(directory, ext) os.makedirs(dest_dir, exist_ok=True) shutil.move(path, os.path.join(dest_dir, fname)) print(f"Moved: {fname} → {ext}/") except Exception as e: print(f"Error organizing files: {e}")if __name__ == "__main__": organize_by_extension(SOURCE_DIR)
此腳本按擴展名組織指定目錄中的檔案。它使用該os
模組列出文件,驗證每個項目是否為文件,提取其擴展名,並創建以其擴展名命名的資料夾。最後,該shutil
模組可協助將每個檔案移至其對應的資料夾中,並附帶一條指示新位置的訊息。
定義 Dockerfile
現在,讓我們建立一個 Dockerfile 來概述腳本的環境:
FROM python:latestLABEL maintainer="[email protected]"WORKDIR /usr/src/appCOPY organize_files.py. CMD ["python", "./organize_files.py"]
此 Dockerfile 使用 Python 設定一個容器,將腳本複製到其中,並確保腳本在容器啟動時自動執行:

建置 Docker 映像
在建置 Docker 映像之前,請確保您的系統上已安裝 Docker。然後,你可以使用以下命令將所有內容打包到鏡像中:
sudo docker build -t file-organizer.
此命令讀取 Dockerfile 並將必要的 Python 設定與腳本一起組裝到單一容器映像中:

建立範例目錄
為了觀察腳本的運作情況,請建立一個名為sample_files的測試資料夾,並在其中填入各種檔案類型以模擬混亂的環境:
mkdir ~/sample_filestouch ~/sample_files/test.txttouch ~/sample_files/image.jpgtouch ~/sample_files/data.csv
在 Docker 中執行腳本
最後,啟動 Docker 容器並將sample_files目錄掛載到容器中。該-v
標誌將本機~/sample_files
目錄連接到容器的/files
目錄,從而允許 Python 腳本存取和組織檔案:
docker run --rm -v ~/sample_files:/files file-organizer
透過使用該--rm
標誌,容器將在完成後自動刪除,從而減少磁碟空間消耗:

若要驗證檔案是否已正確排序,請使用下列tree
命令:
tree sample_files

結論
成功在 Docker 容器中執行 Python 腳本後,您就可以充分利用精簡、可移植且一致的開發環境。這種容器化方法不僅有助於重複使用其他自動化任務,還能簡化腳本共享,無需擔心依賴關係,從而保持系統井然有序。未來,您可以考慮探索如何建立多腳本 Docker 映像、使用 cron 作業自動執行任務,或將腳本與 Git、Jenkins 或雲端服務等重要工具集成,以進一步增強您的自動化工作流程。
發佈留言