argparseが生成するusageは環境変数COLUMNSを見て適当に改行してくれる
タイトルそのままですが、気づいたのでメモ
import os import argparse parser = argparse.ArgumentParser() parser.add_argument('source-file') parser.add_argument('output-file') parser.add_argument('-F') parser.add_argument('-f') parser.add_argument('-i') parser.add_argument('-n') parser.add_argument('-s') parser.add_argument('-v') for v in ["80", "30", "20"]: try: os.environ['COLUMNS'] = v print("*** COLUMNS is %s ***" % os.environ.get('COLUMNS')) args = parser.parse_args() except: pass print "\n"
出力
*** COLUMNS is 80 ***
usage: [-h] [-F F] [-f F] [-i I] [-n N] [-s S] [-v V] source-file output-file
: error: too few arguments
*** COLUMNS is 30 ***
usage: [-h] [-F F] [-f F]
[-i I] [-n N] [-s S]
[-v V]
source-file
output-file
: error: too few arguments
*** COLUMNS is 20 ***
usage: [-h]
[-F F]
[-f F]
[-i I]
[-n N]
[-s S]
[-v V]
source-file
output-file
: error: too few arguments
なのでusageをテストで確認したいなんてときは、ケース内で環境変数COLUMNSを設定するか、usageから改行やスペースを除去した結果を確認とかにしないと、環境によっては結果が変わる可能性がありますね