7

Pythonでargparseモジュールとloggingモジュールの両方を使用しようとしています。私が実行しているプログラムには多くの可能なオプションがあり、このタスクを処理するためにargparseモジュールを正常に実装しました。

プログラムの実行時に各オプションの値を記録して、ログファイルに送信したいと思います。次のいくつかのことを試しましたが、発生した関連エラーをコメントとしてその下に含めました。

parser = argparse.ArgumentParser()
parser.add_argument('input', action="store", default='fort.13', type=str)

args = parser.parse_args()

# First try:
logging.info("Input args: " + args)
# TypeError: cannot concatenate 'str' and 'Namespace' objects

# Second try:
for x in args:
  logging.info(x)
# TypeError: 'Namespace' object is not iterable

これを行うための適切な方法は何ですか?

4

2 に答える 2

12

vars解析された引数の属性を取得するために使用できます。

for arg, value in sorted(vars(args).items()):
    logging.info("Argument %s: %r", arg, value)

これについては、ドキュメントで詳しく説明されています。

于 2012-07-20T01:54:30.857 に答える
3
logging.info("Input args: %r", args)

Namespaceすべての引数を含むオブジェクト全体をログの1行にダンプするだけです。

于 2017-01-11T12:18:46.233 に答える