テクノロジー 開発 非公開: Python でコマンドライン引数を解析する方法

Python でコマンドライン引数を解析する方法

コマンドライン引数を使用して Python スクリプトを実行したいですか? Python の sys、getopt、argparse モジュールを使用してコマンドライン引数を解析する方法を学びます。

Python では、ユーザー入力を読み込む場合は、 input() 関数を使用します。ただし、アプリケーションによっては、コマンド ラインでスクリプトを実行するときに特定の引数を渡したい場合があります。

このチュートリアルでは、コマンド ラインでオプションと引数を指定して Python スクリプトを実行する方法を学びます。次に、Python の組み込みモジュールを使用してそのようなオプションや引数を解析する方法を学びます。

さぁ、始めよう!

Python でコマンドライン引数を解析する方法
Python でコマンドライン引数を解析する方法

Python の sys.argv を理解する

C でプログラミングしたことがある場合は、プログラムに引数を渡す最も簡単な方法の 1 つがコマンド ラインを使用することであることをご存知でしょう。そのためには、main 関数を次のように構成できます。

 #include<stdio.h>

int main(int argc, char **argv){
    //argc: argument count
    //argv: argument vector
    
    //do something on the args

    return 0;
}

ここで、 argc 引数カウントを表し、 argv 引数ベクトルを表します。

コマンドライン引数を使用した Python スクリプトの実行

Python では、 python3 filename.py を使用してコマンド ラインで Python スクリプトを実行できます。その際、任意の数のコマンドライン引数を渡すこともできます。

 $ python3 filename.py arg1 arg2 ... argn

sys モジュールは、これらのコマンドライン引数にアクセスして処理するためのすぐに使えるサポートを提供します。 sys.argv Python スクリプトを実行するときに渡すすべてのコマンドライン引数のリストです。

コマンドライン引数を指定して main.py を実行する例を次に示します。

 $ python3 main.py hello world python script

単純な for ループと列挙関数を使用して引数ベクトルをループできます。

 # main.py

import sys

for idx, arg in enumerate(sys.argv):
    print(f"arg{idx}: {arg}")
 # Output
arg0:main.py
arg1:hello
arg2:world
arg3:python
arg4:script

最初の引数 (インデックス 0) が Python ファイルの名前であることがわかります。そして後続の引数はインデックス 1 から始まります。

これは、コマンドライン引数を受け入れて処理する最小限の動作プログラムです。ただし、次のような問題もあります。

  • プログラムのユーザーはどの引数を渡すべきかをどうやって知るのでしょうか?
  • そして、これらの議論は何を表しているのでしょうか?

これはあまり明確ではありません。これに対処するには、getopt モジュールまたは argparse モジュールを使用できます。それについては次のセクションで学びます。✅

Python でコマンドライン引数を解析する方法
Python でコマンドライン引数を解析する方法

Python の getopt を使用したコマンドライン引数の解析

python-コマンドライン-引数-1
python-コマンドライン-引数-1

組み込みの getopt モジュールを使用してコマンドライン引数を解析する方法を学びましょう。

getopt モジュールから getopt をインポートした後、解析する引数と、スクリプトを実行するための短いオプションと長いオプションを指定できます。 sys.argv のインデックス 1 から始まるすべての引数を解析する必要があります。したがって、解析するスライスは sys.argv[1:] です。

ここでは、 message 文字列と file 名が必要になります。 m f 短いオプションとして使用し、 message file 長いオプションとして使用しましょう。

しかし、特定のオプションに引数が必要であることを確認するにはどうすればよいでしょうか?

  • 短いオプションでは、短いオプション名の後にコロン (:) を追加することで、オプションに引数を要求することができます。
  • 同様に、長いオプションの場合は、長いオプションの後に = 記号を追加できます。これらのオプションとそれぞれの引数をキャプチャできます。

これらを追加すると、main.py に次のコードが含まれます。

 # main.py

import sys
from getopt import getopt

opts, args = getopt(sys.argv[1:],'m:f:',['message=','file='])

print(opts)
print(args)

ここで、変数 opts には、オプションと引数がタプルのリストとして含まれています。渡す他の位置引数は args 変数に収集されます。

スクリプトを実行するためにメッセージとファイル名を渡すことができ、短いオプションまたは長いオプションのいずれかを使用できます。

長いオプションを使用して main.py を実行すると、次のようになります。

 $ python3 main.py --message hello --file somefile.txt

opts 変数には、オプションと引数がタプルとして含まれています。位置引数を渡していないため、 args 空のリストです。

 # Output
[('--message', 'hello'), ('--file', 'somefile.txt')]
[]

同様に、次のような短いオプションも使用できます。

 $ python3 main.py -m hello -f somefile.txt
 # Output
[('-m', 'hello'), ('-f', 'somefile.txt')]
[]

⚠️ この例の -m short オプションは、Python スクリプトの実行時にモジュールをメイン モジュールとして実行するために使用されるコマンドライン フラグ -m と混同しないでください。

たとえば、main.py の実行時に python3 -m unittest main.py 使用してメイン モジュールとして Unittest を実行します。

渡す他のすべての位置引数は args 変数に収集されると述べました。以下に例を示します。

 $ python3 main.py -m hello -f somefile.txt another_argument

args リストには、位置引数 another_argument が含まれています。

 # Output
[('-m', 'hello'), ('-f', 'somefile.txt')]
['another_argument']

ここで、 opts タプルのリストです。したがって、それをループしてタプルを解凍し、特定のオプションに対応する引数を取り出すことができます。

しかし、これらの引数を処理した後、ファイル名とメッセージをどうすればよいでしょうか?ファイルを書き込みモードで開き、大文字に変換されたメッセージ文字列をファイルに書き込みます。

 # main.py
import sys
from getopt import getopt

opts, args = getopt(sys.argv[1:],'m:f:',['message=','file='])

print(opts)
print(args)

for option, argument in opts:
    if option == '-m':
        message = argument
    if option == '-f':
        file = argument

with open(file,'w') as f:
    f.write(message.upper())

短いオプションとコマンドライン引数を指定して main.py を実行してみましょう。

 $ python main.py -m hello -f thisfile.txt
[('-m', 'hello'), ('-f', 'thisfile.txt')]
[]

main.py を実行すると、作業ディレクトリに「thisfile.txt」が表示されます。これには、大文字 (‘HELLO’) に変換された文字列「hello」が含まれています。

 $ ls
main.py  thisfile.txt
 $ cat thisfile.txt
HELLO
Python でコマンドライン引数を解析する方法
Python でコマンドライン引数を解析する方法

Argparse を使用してコマンドライン引数を解析する方法

argparse モジュールも Python 標準ライブラリに組み込まれており、コマンド ライン引数を解析し、コマンド ライン インターフェイスを構築する機能を提供します。

コマンドライン引数を解析するには、argparse モジュールから ArgumentParser クラスをインポートしましょう。ここでは、 ArgumentParser オブジェクトである arg_parser インスタンス化しました。

 from argparse import ArgumentParser

arg_parser = ArgumentParser()

次に、2 つのコマンドライン引数を追加します。

  • message : メッセージ文字列、および
  • file : 操作したいファイルの名前。

ここで、 arg_parser add_argument() メソッドを呼び出して、これらの引数を両方追加します。 add_argument() メソッド呼び出しでは、 help 文字列 (引数の説明) に設定できます。

 arg_parser.add_argument('message',help='message string')
arg_parser.add_argument('file',help='filename')

ここまでで、 arg_parser インスタンス化し、コマンドライン引数を追加しました。プログラムがコマンド ラインで実行される場合、 arg_parser parse_args() メソッドを使用して引数の値を取得できます。

ここでは、引数の名前空間を変数 args にキャプチャします。したがって、 args.argument_name を使用して引数の値を取得できます。

引数の値を取得した後、大文字と小文字を入れ替えた message 文字列を ( swapcase() 文字列メソッドを使用して) file に書き込みます。

 args = arg_parser.parse_args()

message = args.message
file = args.file

with open(file,'w') as f:
     f.write(message.swapcase())

すべてをまとめると、main.py ファイルは次のようになります。

 # main.py

from argparse import ArgumentParser

arg_parser = ArgumentParser()
arg_parser.add_argument('message',help='message string')
arg_parser.add_argument('file',help='filename')

args = arg_parser.parse_args()
print(args)

message = args.message
file = args.file

with open(file,'w') as f:
     f.write(message.swapcase())

コマンドライン引数の使用法を理解する

main.py の実行時の引数の使用法を理解するには、次のように --help long オプションを使用できます。

 $ python3 main.py --help
usage: main.py [-h] message file

positional arguments:
  message     message string
  file        filename

optional arguments:
  -h, --help  show this help message and exit

オプションの引数は なく message file の両方が 必須の 位置引数です。あるいは、短いオプション -h を使用することもできます。

 $ python3 main.py -h
usage: main.py [-h] message file

positional arguments:
  message     message string
  file        filename

optional arguments:
  -h, --help  show this help message and exit

ご覧のとおり、両方の引数はデフォルトで位置引数です。したがって、これらの引数の 1 つ以上を渡さないと、エラーが発生します。

ここでは、 message 文字列の位置引数 (Hello) を渡していますが、 file 引数には値を指定していません。

そして、 file 引数が必要であることを示すエラーが表示されます。

 $ python3 main.py Hello
usage: main.py [-h] message file
main.py: error: the following arguments are required: file

両方の位置引数を指定して main.py を実行すると、名前空間 args に引数の値が含まれていることがわかります。

 $ python3 main.py Hello file1.txt
 # Output
Namespace(file='file1.txt', message='Hello')

現在の作業ディレクトリの内容を調べると、スクリプトによってファイル ‘file1.txt’ が作成されていることがわかります。

 $ ls
file1.txt  main.py

元のメッセージ文字列は「Hello」です。大文字と小文字を入れ替えると、ファイル「file1.txt」内のメッセージ文字列は「hELLO」になります。

 $ cat file1.txt
hELLO

コマンドライン引数をオプションにする方法

これらのコマンドライン引数を オプションに するには、引数名の前に -- を付けることができます。

main.py を変更して、 message file 引数の両方をオプションにしましょう。

 # main.py

from argparse import ArgumentParser

arg_parser = ArgumentParser()
arg_parser.add_argument('--message',help='message string')
arg_parser.add_argument('--file',help='filename')

コマンドライン引数はどちらもオプションであるため、これらの引数にデフォルト値を設定できます。

 if args.message and args.file:
    message = args.message
    file = args.file
else:
    message = 'Python3'
    file = 'myfile.txt'

この時点で、main.py ファイルには次のコードが含まれています。

 # main.py

from argparse import ArgumentParser

arg_parser = ArgumentParser()
arg_parser.add_argument('--message',help='message string')
arg_parser.add_argument('--file',help='filename')

args = arg_parser.parse_args()
print(args)

if args.message and args.file:
    message = args.message
    file = args.file
else:
    message = 'Python3'
    file = 'myfile.txt'

with open(file,'w') as f:
     f.write(message.swapcase())

使用法を確認すると、 message file are ことがわかります。つまり、これらの引数の両方 なしで main.py を実行できるようになりました。

 $ python3 main.py --help
usage: main.py [-h] [--message MESSAGE] [--file FILE]

optional arguments:
  -h, --help         show this help message and exit
  --message MESSAGE  message string
  --file FILE        filename
 $ python3 main.py

引数の名前空間では、 file message 両方とも None です。

 # Output
Namespace(file=None, message=None)

デフォルトの file 名と message 「myfile.txt」および「Python3」が使用されていることがわかります。ファイル「myfile.txt」は作業ディレクトリにあります。

 $ ls
file1.txt  main.py  myfile.txt

そして、大文字と小文字を入れ替えた文字列「Python3」が含まれています。

 $ cat myfile.txt
pYTHON3

--message --file 引数の両方を使用して、コマンドを読みやすくすることもできます。

 $ python3 main.py --message Coding --file file2.txt
 # Output
Namespace(file='file2.txt', message='Coding')

作業ディレクトリに「file2.txt」が表示されます。

 $ ls
file1.txt  file2.txt  main.py  myfile.txt

そして、予想どおり、文字列「cODING」が含まれています。

 $ cat file2.txt
cODING

結論

このチュートリアルで学んだことの概要は次のとおりです。

  • C プログラミング言語と同様に、Python では、引数ベクトル sys.argv をループすることでコマンド ライン引数にアクセスできます。 sys.argv[0] は Python スクリプトの名前です。したがって、引数 sys.argv[1:] を解析することに興味があります。
  • ただし、可読性を高め、オプションを追加できるようにするために、 getopt および argparse モジュールを使用できます。
  • getopt モジュールを使用すると、インデックス 1 からリストの末尾までのコマンド ライン引数のリストを解析できます。短いオプションと長いオプションの両方を指定できます。
  • オプションが引数を取る場合、短いオプションと長いオプションの後にそれぞれコロン (:) と = を指定できます。
  • Python の argparse モジュールを使用すると、 ArgumentParser オブジェクトをインスタンス化し、 add_argument() メソッドを使用して必要な位置引数を追加できます。オプションにするには、引数名の前に -- 使用します。
  • コマンドライン引数の値を取得するには、 ArgumentParser オブジェクトの parse_args() メソッドを呼び出します。

次に、Python で安全なハッシュを実行する方法を学びます。

Python でコマンドライン引数を解析する方法
Python でコマンドライン引数を解析する方法

「 Python でコマンドライン引数を解析する方法」についてわかりやすく解説!絶対に観るべきベスト2動画

コマンドラインからPythonに引数を渡す方法
https://www.youtube.com/watch?v=kAsrMOU57AQ&pp=ygVBIFB5dGhvbiDjgafjgrPjg57jg7Pjg4njg6njgqTjg7PlvJXmlbDjgpLop6PmnpDjgZnjgovmlrnms5UmaGw9SkE%3D
【Pythonライブラリ】コマンドライン引数の使い方(sys)~プログラミング解説動画~

コマンドライン引数を使用して Python スクリプトを実行したいですか? Python の sys、getopt、argparse モジュールを使用してコマンドライン引数を解析する方法を学びます。

Python では、ユーザー入力を読み込む場合は、 input() 関数を使用します。ただし、アプリケーションによっては、コマンド ラインでスクリプトを実行するときに特定の引数を渡したい場合があります。

このチュートリアルでは、コマンド ラインでオプションと引数を指定して Python スクリプトを実行する方法を学びます。次に、Python の組み込みモジュールを使用してそのようなオプションや引数を解析する方法を学びます。

さぁ、始めよう!

Python でコマンドライン引数を解析する方法
Python でコマンドライン引数を解析する方法

Python の sys.argv を理解する

C でプログラミングしたことがある場合は、プログラムに引数を渡す最も簡単な方法の 1 つがコマンド ラインを使用することであることをご存知でしょう。そのためには、main 関数を次のように構成できます。

 #include<stdio.h>

int main(int argc, char **argv){
    //argc: argument count
    //argv: argument vector
    
    //do something on the args

    return 0;
}

ここで、 argc 引数カウントを表し、 argv 引数ベクトルを表します。

コマンドライン引数を使用した Python スクリプトの実行

Python では、 python3 filename.py を使用してコマンド ラインで Python スクリプトを実行できます。その際、任意の数のコマンドライン引数を渡すこともできます。

 $ python3 filename.py arg1 arg2 ... argn

sys モジュールは、これらのコマンドライン引数にアクセスして処理するためのすぐに使えるサポートを提供します。 sys.argv Python スクリプトを実行するときに渡すすべてのコマンドライン引数のリストです。

コマンドライン引数を指定して main.py を実行する例を次に示します。

 $ python3 main.py hello world python script

単純な for ループと列挙関数を使用して引数ベクトルをループできます。

 # main.py

import sys

for idx, arg in enumerate(sys.argv):
    print(f"arg{idx}: {arg}")
 # Output
arg0:main.py
arg1:hello
arg2:world
arg3:python
arg4:script

最初の引数 (インデックス 0) が Python ファイルの名前であることがわかります。そして後続の引数はインデックス 1 から始まります。

これは、コマンドライン引数を受け入れて処理する最小限の動作プログラムです。ただし、次のような問題もあります。

  • プログラムのユーザーはどの引数を渡すべきかをどうやって知るのでしょうか?
  • そして、これらの議論は何を表しているのでしょうか?

これはあまり明確ではありません。これに対処するには、getopt モジュールまたは argparse モジュールを使用できます。それについては次のセクションで学びます。✅

Python でコマンドライン引数を解析する方法
Python でコマンドライン引数を解析する方法

Python の getopt を使用したコマンドライン引数の解析

python-コマンドライン-引数-1
python-コマンドライン-引数-1

組み込みの getopt モジュールを使用してコマンドライン引数を解析する方法を学びましょう。

getopt モジュールから getopt をインポートした後、解析する引数と、スクリプトを実行するための短いオプションと長いオプションを指定できます。 sys.argv のインデックス 1 から始まるすべての引数を解析する必要があります。したがって、解析するスライスは sys.argv[1:] です。

ここでは、 message 文字列と file 名が必要になります。 m f 短いオプションとして使用し、 message file 長いオプションとして使用しましょう。

しかし、特定のオプションに引数が必要であることを確認するにはどうすればよいでしょうか?

  • 短いオプションでは、短いオプション名の後にコロン (:) を追加することで、オプションに引数を要求することができます。
  • 同様に、長いオプションの場合は、長いオプションの後に = 記号を追加できます。これらのオプションとそれぞれの引数をキャプチャできます。

これらを追加すると、main.py に次のコードが含まれます。

 # main.py

import sys
from getopt import getopt

opts, args = getopt(sys.argv[1:],'m:f:',['message=','file='])

print(opts)
print(args)

ここで、変数 opts には、オプションと引数がタプルのリストとして含まれています。渡す他の位置引数は args 変数に収集されます。

スクリプトを実行するためにメッセージとファイル名を渡すことができ、短いオプションまたは長いオプションのいずれかを使用できます。

長いオプションを使用して main.py を実行すると、次のようになります。

 $ python3 main.py --message hello --file somefile.txt

opts 変数には、オプションと引数がタプルとして含まれています。位置引数を渡していないため、 args 空のリストです。

 # Output
[('--message', 'hello'), ('--file', 'somefile.txt')]
[]

同様に、次のような短いオプションも使用できます。

 $ python3 main.py -m hello -f somefile.txt
 # Output
[('-m', 'hello'), ('-f', 'somefile.txt')]
[]

⚠️ この例の -m short オプションは、Python スクリプトの実行時にモジュールをメイン モジュールとして実行するために使用されるコマンドライン フラグ -m と混同しないでください。

たとえば、main.py の実行時に python3 -m unittest main.py 使用してメイン モジュールとして Unittest を実行します。

渡す他のすべての位置引数は args 変数に収集されると述べました。以下に例を示します。

 $ python3 main.py -m hello -f somefile.txt another_argument

args リストには、位置引数 another_argument が含まれています。

 # Output
[('-m', 'hello'), ('-f', 'somefile.txt')]
['another_argument']

ここで、 opts タプルのリストです。したがって、それをループしてタプルを解凍し、特定のオプションに対応する引数を取り出すことができます。

しかし、これらの引数を処理した後、ファイル名とメッセージをどうすればよいでしょうか?ファイルを書き込みモードで開き、大文字に変換されたメッセージ文字列をファイルに書き込みます。

 # main.py
import sys
from getopt import getopt

opts, args = getopt(sys.argv[1:],'m:f:',['message=','file='])

print(opts)
print(args)

for option, argument in opts:
    if option == '-m':
        message = argument
    if option == '-f':
        file = argument

with open(file,'w') as f:
    f.write(message.upper())

短いオプションとコマンドライン引数を指定して main.py を実行してみましょう。

 $ python main.py -m hello -f thisfile.txt
[('-m', 'hello'), ('-f', 'thisfile.txt')]
[]

main.py を実行すると、作業ディレクトリに「thisfile.txt」が表示されます。これには、大文字 (‘HELLO’) に変換された文字列「hello」が含まれています。

 $ ls
main.py  thisfile.txt
 $ cat thisfile.txt
HELLO
Python でコマンドライン引数を解析する方法
Python でコマンドライン引数を解析する方法

Argparse を使用してコマンドライン引数を解析する方法

argparse モジュールも Python 標準ライブラリに組み込まれており、コマンド ライン引数を解析し、コマンド ライン インターフェイスを構築する機能を提供します。

コマンドライン引数を解析するには、argparse モジュールから ArgumentParser クラスをインポートしましょう。ここでは、 ArgumentParser オブジェクトである arg_parser インスタンス化しました。

 from argparse import ArgumentParser

arg_parser = ArgumentParser()

次に、2 つのコマンドライン引数を追加します。

  • message : メッセージ文字列、および
  • file : 操作したいファイルの名前。

ここで、 arg_parser add_argument() メソッドを呼び出して、これらの引数を両方追加します。 add_argument() メソッド呼び出しでは、 help 文字列 (引数の説明) に設定できます。

 arg_parser.add_argument('message',help='message string')
arg_parser.add_argument('file',help='filename')

ここまでで、 arg_parser インスタンス化し、コマンドライン引数を追加しました。プログラムがコマンド ラインで実行される場合、 arg_parser parse_args() メソッドを使用して引数の値を取得できます。

ここでは、引数の名前空間を変数 args にキャプチャします。したがって、 args.argument_name を使用して引数の値を取得できます。

引数の値を取得した後、大文字と小文字を入れ替えた message 文字列を ( swapcase() 文字列メソッドを使用して) file に書き込みます。

 args = arg_parser.parse_args()

message = args.message
file = args.file

with open(file,'w') as f:
     f.write(message.swapcase())

すべてをまとめると、main.py ファイルは次のようになります。

 # main.py

from argparse import ArgumentParser

arg_parser = ArgumentParser()
arg_parser.add_argument('message',help='message string')
arg_parser.add_argument('file',help='filename')

args = arg_parser.parse_args()
print(args)

message = args.message
file = args.file

with open(file,'w') as f:
     f.write(message.swapcase())

コマンドライン引数の使用法を理解する

main.py の実行時の引数の使用法を理解するには、次のように --help long オプションを使用できます。

 $ python3 main.py --help
usage: main.py [-h] message file

positional arguments:
  message     message string
  file        filename

optional arguments:
  -h, --help  show this help message and exit

オプションの引数は なく message file の両方が 必須の 位置引数です。あるいは、短いオプション -h を使用することもできます。

 $ python3 main.py -h
usage: main.py [-h] message file

positional arguments:
  message     message string
  file        filename

optional arguments:
  -h, --help  show this help message and exit

ご覧のとおり、両方の引数はデフォルトで位置引数です。したがって、これらの引数の 1 つ以上を渡さないと、エラーが発生します。

ここでは、 message 文字列の位置引数 (Hello) を渡していますが、 file 引数には値を指定していません。

そして、 file 引数が必要であることを示すエラーが表示されます。

 $ python3 main.py Hello
usage: main.py [-h] message file
main.py: error: the following arguments are required: file

両方の位置引数を指定して main.py を実行すると、名前空間 args に引数の値が含まれていることがわかります。

 $ python3 main.py Hello file1.txt
 # Output
Namespace(file='file1.txt', message='Hello')

現在の作業ディレクトリの内容を調べると、スクリプトによってファイル ‘file1.txt’ が作成されていることがわかります。

 $ ls
file1.txt  main.py

元のメッセージ文字列は「Hello」です。大文字と小文字を入れ替えると、ファイル「file1.txt」内のメッセージ文字列は「hELLO」になります。

 $ cat file1.txt
hELLO

コマンドライン引数をオプションにする方法

これらのコマンドライン引数を オプションに するには、引数名の前に -- を付けることができます。

main.py を変更して、 message file 引数の両方をオプションにしましょう。

 # main.py

from argparse import ArgumentParser

arg_parser = ArgumentParser()
arg_parser.add_argument('--message',help='message string')
arg_parser.add_argument('--file',help='filename')

コマンドライン引数はどちらもオプションであるため、これらの引数にデフォルト値を設定できます。

 if args.message and args.file:
    message = args.message
    file = args.file
else:
    message = 'Python3'
    file = 'myfile.txt'

この時点で、main.py ファイルには次のコードが含まれています。

 # main.py

from argparse import ArgumentParser

arg_parser = ArgumentParser()
arg_parser.add_argument('--message',help='message string')
arg_parser.add_argument('--file',help='filename')

args = arg_parser.parse_args()
print(args)

if args.message and args.file:
    message = args.message
    file = args.file
else:
    message = 'Python3'
    file = 'myfile.txt'

with open(file,'w') as f:
     f.write(message.swapcase())

使用法を確認すると、 message file are ことがわかります。つまり、これらの引数の両方 なしで main.py を実行できるようになりました。

 $ python3 main.py --help
usage: main.py [-h] [--message MESSAGE] [--file FILE]

optional arguments:
  -h, --help         show this help message and exit
  --message MESSAGE  message string
  --file FILE        filename
 $ python3 main.py

引数の名前空間では、 file message 両方とも None です。

 # Output
Namespace(file=None, message=None)

デフォルトの file 名と message 「myfile.txt」および「Python3」が使用されていることがわかります。ファイル「myfile.txt」は作業ディレクトリにあります。

 $ ls
file1.txt  main.py  myfile.txt

そして、大文字と小文字を入れ替えた文字列「Python3」が含まれています。

 $ cat myfile.txt
pYTHON3

--message --file 引数の両方を使用して、コマンドを読みやすくすることもできます。

 $ python3 main.py --message Coding --file file2.txt
 # Output
Namespace(file='file2.txt', message='Coding')

作業ディレクトリに「file2.txt」が表示されます。

 $ ls
file1.txt  file2.txt  main.py  myfile.txt

そして、予想どおり、文字列「cODING」が含まれています。

 $ cat file2.txt
cODING

結論

このチュートリアルで学んだことの概要は次のとおりです。

  • C プログラミング言語と同様に、Python では、引数ベクトル sys.argv をループすることでコマンド ライン引数にアクセスできます。 sys.argv[0] は Python スクリプトの名前です。したがって、引数 sys.argv[1:] を解析することに興味があります。
  • ただし、可読性を高め、オプションを追加できるようにするために、 getopt および argparse モジュールを使用できます。
  • getopt モジュールを使用すると、インデックス 1 からリストの末尾までのコマンド ライン引数のリストを解析できます。短いオプションと長いオプションの両方を指定できます。
  • オプションが引数を取る場合、短いオプションと長いオプションの後にそれぞれコロン (:) と = を指定できます。
  • Python の argparse モジュールを使用すると、 ArgumentParser オブジェクトをインスタンス化し、 add_argument() メソッドを使用して必要な位置引数を追加できます。オプションにするには、引数名の前に -- 使用します。
  • コマンドライン引数の値を取得するには、 ArgumentParser オブジェクトの parse_args() メソッドを呼び出します。

次に、Python で安全なハッシュを実行する方法を学びます。

Python でコマンドライン引数を解析する方法
Python でコマンドライン引数を解析する方法

「 Python でコマンドライン引数を解析する方法」についてわかりやすく解説!絶対に観るべきベスト2動画

コマンドラインからPythonに引数を渡す方法
https://www.youtube.com/watch?v=kAsrMOU57AQ&pp=ygVBIFB5dGhvbiDjgafjgrPjg57jg7Pjg4njg6njgqTjg7PlvJXmlbDjgpLop6PmnpDjgZnjgovmlrnms5UmaGw9SkE%3D
【Pythonライブラリ】コマンドライン引数の使い方(sys)~プログラミング解説動画~