首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Python sys.argv 命令列參數完整使用指南

     編輯:更多程式設計知識

在 Python 開發中,sys.argv 是獲取命令列參數的核心機制。它是一個字串列表,包含了執行腳本時傳遞的所有參數。理解其運作方式,能讓你的腳本更具彈性與互動性。

基本概念與索引規則

sys.argv[0] 永遠代表腳本本身的檔案路徑(或檔名),而 sys.argv[1]、sys.argv[2] 依此類推對應後續傳入的參數。Python 採用零基礎索引,這點需特別注意。

例如,執行指令:

python test.py --version help

則對應關係如下:

  • sys.argv[0] = 'test.py'
  • sys.argv[1] = '--version'
  • sys.argv[2] = 'help'

實戰範例:建立支援參數的檔案讀取腳本

以下範例示範如何解析參數、判斷選項(如 --help、--version),並批次讀取多個檔案內容輸出至標準輸出:

#!/usr/bin/env python
import sys

def readfile(filename):
    '''將檔案內容輸出至標準輸出'''
    with open(filename, 'r') as f:
        for line in f:
            print(line, end='')

if __name__ == '__main__':
    # 顯示原始參數陣列(除錯用)
    print("sys.argv[0]---------", sys.argv[0])
    print("sys.argv[1]---------", sys.argv[1] if len(sys.argv) > 1 else "N/A")
    print("sys.argv[2]---------", sys.argv[2] if len(sys.argv) > 2 else "N/A")

    if len(sys.argv) < 2:
        print('錯誤:未指定任何操作。')
        sys.exit(1)

    # 處理以 -- 開頭的選項
    if sys.argv[1].startswith('--'):
        option = sys.argv[1][2:]  # 移除前兩個字元 '--'
        if option == 'version':
            print('Version 1.2')
        elif option == 'help':
            print('''此程式可將檔案內容輸出至標準輸出。
可指定多個檔案。
選項包括:
  --version : 顯示版本號
  --help    : 顯示此說明''')
        else:
            print('未知選項。')
            sys.exit(1)
    else:
        # 視所有參數為檔案名,依序讀取
        for filename in sys.argv[1:]:
            readfile(filename)

關鍵技巧解析

  • 參數檢查:執行前先確認 len(sys.argv),避免索引越界。
  • 選項解析:使用 str.startswith('--') 快速辨識長選項,配合切片 [2:] 取得實際選項名稱。
  • 批次處理:sys.argv[1:] 切片可一次取得所有檔案參數,搭配迴圈處理。
  • 資源管理:採用 with open(...) 確保檔案正確關閉(優於手動 close())。

進階應用提示

若需支援短選項(如 -v、-h)、選項附帶參數(如 -o output.txt)或複雜指令結構,建議改用 argparse 模組,它提供更強大的參數解析、自動生成說明、型別驗證等功能,是現代 Python CLI 開發的標準選擇。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved