Python 自動化第一步:腳本編寫與 CLI 工具 (第 41 章)

站主自己的課程,請大家支持
揭秘站長的架站心法:如何利用 Hugo × AI 打造高質感個人品牌網站? 揭秘站長的架站心法:如何利用 Hugo × AI 打造高質感個人品牌網站?
  • Post by
  • Jan 24, 2024
post-thumb

Python 最一開始被廣泛接受,就是作為強大的「腳本語言 (Scripting Language)」。對於系統管理員或 DevOps 工程師來說,Python 是用來取代 Shell Script 的最佳利器。

1. 打造專業的 CLI 工具:argparse

如果你還在用 sys.argv[1] 來讀取參數,那就太落伍了。argparse 能讓你輕鬆定義參數、說明文件與型別檢查。

# my_tool.py
import argparse

def main():
    parser = argparse.ArgumentParser(description="這是一個超酷的檔案處理工具")
    
    # 位置參數 (必填)
    parser.add_argument("filename", help="要處理的檔案名稱")
    
    # 選項參數 (選填)
    parser.add_argument("-c", "--count", type=int, default=1, help="重複次數")
    parser.add_argument("-v", "--verbose", action="store_true", help="顯示詳細輸出")

    args = parser.parse_args()

    if args.verbose:
        print(f"正在處理 {args.filename}...")

    for _ in range(args.count):
        print(f"Processing {args.filename}")

if __name__ == "__main__":
    main()

執行結果:

$ python my_tool.py data.txt -c 3 -v
正在處理 data.txt...
Processing data.txt
Processing data.txt
Processing data.txt

$ python my_tool.py -h
# 自動顯示漂亮的 Help 訊息

2. 現代化路徑處理:pathlib

請忘記 os.path.join 吧!Python 3.4 引入的 pathlib 讓路徑操作變得像物件導向一樣優雅。

from pathlib import Path

# 取得當前目錄
p = Path(".")

# 遍歷所有 .py 檔案
for file in p.glob("*.py"):
    print(file.name)

# 路徑拼接
data_folder = p / "data" / "raw"
# 自動處理 Windows (\) 與 Mac/Linux (/) 的差異

# 讀寫檔案超簡單
new_file = data_folder / "test.txt"
if not new_file.parent.exists():
    new_file.parent.mkdir(parents=True) # 自動建立父目錄

new_file.write_text("Hello Pathlib!", encoding="utf-8")
print(new_file.read_text(encoding="utf-8"))

3. 呼叫系統指令:subprocess

有時候我們需要呼叫外部指令 (如 ls, git, docker)。subprocess.run 是你的好朋友。

import subprocess

# 執行 'ls -l' (Mac/Linux)
result = subprocess.run(["ls", "-l"], capture_output=True, text=True)

if result.returncode == 0:
    print("指令執行成功!輸出如下:")
    print(result.stdout)
else:
    print("指令失敗!錯誤如下:")
    print(result.stderr)

4. 總結

掌握了這些工具,你就可以寫出各種自動化腳本:

  1. argparse: 讓腳本好用。
  2. pathlib: 讓檔案操作優雅。
  3. subprocess: 讓 Python 成為系統指揮官。

下一章,我們將進入辦公室自動化領域——用 Python 操控 Excel 報表


延伸閱讀

LATEST POST
TAG