コマンドライン引数を複数回許可したかったので,argparseを使用し,以下のコードを作成しました
(ファイル名 comannd_line_test.py)
import argparse parser = argparse.ArgumentParser() ## インスタンス生成 parser.add_argument('-n', '--name', default="world", type = str, action="extend", nargs= "*", help ="aaaaa") # -n, --name 引数を指定 args = parser.parse_args() ## 引数をパース print(args) print("Hello, {name}!!".format(name=args.name))
コマンドプロンプトにて以下のコマンドを実行したところ,
.\comannd_line_test.py --name aaa --name bbb
以下のようなエラーが出ました
Traceback (most recent call last): File "D:\program\movie_easy\JumpCut_note_DT\pyhton_jupcut\comannd_line_test.py", line 7, in <module> args = parser.parse_args() ## 引数をパース File "C:\Users\ryo\AppData\Local\Programs\Python\Python39\lib\argparse.py", line 1818, in parse_args args, argv = self.parse_known_args(args, namespace) File "C:\Users\ryo\AppData\Local\Programs\Python\Python39\lib\argparse.py", line 1851, in parse_known_args namespace, args = self._parse_known_args(args, namespace) File "C:\Users\ryo\AppData\Local\Programs\Python\Python39\lib\argparse.py", line 2060, in _parse_known_args start_index = consume_optional(start_index) File "C:\Users\ryo\AppData\Local\Programs\Python\Python39\lib\argparse.py", line 2000, in consume_optional take_action(action, args, option_string) File "C:\Users\ryo\AppData\Local\Programs\Python\Python39\lib\argparse.py", line 1928, in take_action action(self, namespace, argument_values, option_string) File "C:\Users\ryo\AppData\Local\Programs\Python\Python39\lib\argparse.py", line 1219, in __call__ items.extend(values) AttributeError: 'str' object has no attribute 'extend'
ソースコード内の action="extend" を削除すればエラーは起きませんでした.
なので,action の記述方法が間違っているのかと思いましたが, 下記に示す公式ドキュメントを参照しても違いが無いように思えます.
https://docs.python.org/ja/3/library/argparse.html#action
自身のpython のバージョンは 3.9.6 です
何方か原因を教えていただけないでしょうか?
よろしくお願いします.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/19 16:55