用語比較
sys.argvとargparseの違い|コマンドライン引数の受け取り方(Python3基礎)
Pythonのスクリプトにコマンドラインから渡した引数を受け取る方法は、標準ライブラリに2つあります。sysモジュールのargv属性と、argparseモジュールです。
sys.argvは、引数をリストとして格納します。argparseは、コマンドライン引数を処理するための、より高度な仕組みです。argvは並んだ文字列そのまま、argparseは名前つきオプションとして解析と覚えると区別できます。
Python3エンジニア認定基礎試験は、公式チュートリアルの内容を章ごとの出題率で出題する形で、第10章の標準ライブラリめぐりも範囲です。この記事では、チュートリアル10.3の例で、2つの受け取り方を見比べます。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。Python3エンジニア認定基礎試験の一次情報確認日: 2026-09-18。
結論
sys.argv
コマンドライン引数が、sysモジュールのargv属性にリストとして格納される。チュートリアルの例では、python demo.py one two three で ['demo.py', 'one', 'two', 'three'] になる。
argparse
コマンドライン引数を処理するための、より高度な仕組み。ArgumentParserでパーサーを作り、add_argument()で引数を定義し、parse_args()で解析する。
共通点
どちらも標準ライブラリで、スクリプトに渡された引数を受け取るために使える。
違いを表で確認
| 比較軸 | sys.argv | argparse |
|---|---|---|
| 引数の受け取り方 | リスト sys.argv に格納される(例では先頭の要素がスクリプト名 'demo.py') | add_argument() で定義した引数を、parse_args() で解析して受け取る |
| チュートリアル10.3の例の結果 | python demo.py one two three で ['demo.py', 'one', 'two', 'three'] | python top.py --lines=5 alpha.txt beta.txt で args.lines が 5、args.filenames が ['alpha.txt', 'beta.txt'] |
| 使うモジュール | sys | argparse |
Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)
試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。
どこで迷っているかを切り分ける
渡した引数が、どんな形で手に入るのか知りたい人
sys.argvはリストです。チュートリアルの例では、スクリプト名のあとに、渡した引数が順に並びます。
ファイル名と、--lines のようなオプションを分けて受け取りたい人
チュートリアルのargparseの例は、1つ以上のファイル名と、必要に応じて指定する表示行数を取り出します。解析後は args.lines や args.filenames として読めます。
具体例で使い分ける
例 1
チュートリアル10.3のsys.argv
demo.py の中で print(sys.argv) を呼び、python demo.py one two three と実行します。
- 引数は、sysモジュールのargv属性にリストとして格納されます。
- 出力は ['demo.py', 'one', 'two', 'three'] です。
結論: sys.argvは、渡した引数をリストでそのまま受け取ります。
例 2
チュートリアル10.3のargparse
ArgumentParser で、filenames(1つ以上)と --lines(整数、省略時は10)を定義し、parse_args() で解析します。python top.py --lines=5 alpha.txt beta.txt と実行します。
- args.lines が 5 になります。
- args.filenames が ['alpha.txt', 'beta.txt'] になります。
結論: argparseは、定義した名前で引数を解析して受け取ります。
問題文から答えを選ぶ手順
- 1
使うモジュールを見る
import sys なら sys.argv、import argparse なら ArgumentParser を使う書き方です。
- 2
引数の読み方を見る
リストの添字で読むなら sys.argv、args.lines のように名前で読むならargparseです。
- 3
先頭の要素に注意する
チュートリアルの例では、sys.argv の先頭にスクリプト名 'demo.py' が入り、渡した引数はその次から並びます。起動の形による違いは、リンク先の解説で確認できます。
試験での見分け方
- 1コマンドライン引数が、リストとして格納されるのは、sys.argv。
- 2コマンドライン引数を、より高度な仕組みで処理するのは、argparse。
- 3argparseは、ArgumentParser、add_argument()、parse_args() の順に使う。
- 4チュートリアルの例では、sys.argv の先頭の要素はスクリプト名。
誤答しやすい選択肢
sys.argv[0] が最初に渡した引数だと考える
修正: チュートリアルの例では、sys.argv の先頭は 'demo.py' というスクリプト名で、渡した引数はその次から始まります。
argparseを使わないとオプションを受け取れないと考える
修正: sys.argv にも、渡した引数はリストとして格納されます。argparseは、それをより高度に処理するための仕組みです。
確認問題
Q1python demo.py one two three と実行したとき、sys.argv の内容は?
答え: ['demo.py', 'one', 'two', 'three']
チュートリアル10.3の例です。先頭の要素はスクリプト名です。
Q2argparse で、引数を定義するメソッドは?
答え: add_argument()
チュートリアル10.3が、ArgumentParserでパーサーを作り、add_argument()で引数を定義し、parse_args()で解析すると説明しています。
Q3python top.py --lines=5 alpha.txt beta.txt のとき、args.lines の値は?
答え: 5
チュートリアル10.3の例で、args.lines が 5、args.filenames が ['alpha.txt', 'beta.txt'] になります。
到達チェック
- sys.argvの中身の並びを説明できる
- argparseで引数を定義、解析するメソッドを言える
- 2つの受け取り方の違いを説明できる
関連ページで確認する
同じ資格で次に知りたいこと
- doctestとunittestの違い|テストの書き場所と使い分け(Python3基礎)
doctestはdocstringに埋め込んだ呼び出し例を検証し、unittestは別ファイルのTestCaseで網羅的に検証します。Python公式チュートリアル10.11の例で整理。確認問題つき。
- 浅いコピーと深いコピーの違い(copy.copy と copy.deepcopy)
Pythonの copy.copy(浅いコピー)と copy.deepcopy(深いコピー)の違いを、入れ子のリストを変更したときの動き、list.copy() や a[:] との関係、判断手順と確認問題つきで解説します。
- raiseとraise ... fromの違い|例外の連鎖の表示(Python3基礎)
except節の中で別の例外をraiseしたときの表示と、from節・from Noneを付けたときの違いを、Python公式チュートリアル8.5の例で整理します。確認問題つき。
よくある質問
Qsys.argvとは?
コマンドライン引数がリストとして格納される、sysモジュールの属性です。
Qargparseとは?
コマンドライン引数を処理するための、より高度な仕組みを提供する標準ライブラリです。
Qsys.argvとargparseの違いは?
引数の受け取り方です。sys.argvはリストでそのまま受け取り、argparseは定義した名前で解析して受け取ります。
QPython3基礎試験の範囲?
公式の出題範囲は公式チュートリアルの章単位で、第10章の標準ライブラリめぐりと、10.3のコマンドライン引数を含みます。出題の形式は受験前に公式の案内で確認してください。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: ミナト編集部(運営者情報を見る)
