4

次の興味深いエラーが発生しました。

parser.add_option("-n", "--number", metavar="NUMBER", type="int", 
                  help="number is NUMBER")
(options, args) = parser.parse_args()

if options.number: # User added a number
  do something
  exit(0)

しばらくして、数値が有効な場合はアプリケーションが機能しないことがわかりましたが0、これは有効な数値でなければなりません (>= 0 である必要があります)。問題はそれ0ですFalse

次のように変更する必要があります:

if options.number is not None:

それとももっと洗練されたものですか?

4

2 に答える 2

4

Pythonでは、整数をブール値として使用できますが、ゼロ以外のものはすべてとに解決さTrue0ますFalse。したがって、オプション--numberが設定されているかどうかを確認する場合は、チェックする必要がありますNone(つまり、オプションが設定されていないことを意味します)。

それで:

if options.number is not None:

完全に大丈夫です。

于 2012-01-05T11:43:07.420 に答える
2

また、optparse は Python 2.7 以降非推奨になっているため、optparse の代わりに argparse モジュールを使用することを検討してください。argparse ドキュメントの最後のセクションは、optparse コードのアップグレードに関するものです。

http://docs.python.org/library/argparse.html

ただし、それがあなたの特定の問題にどのように対処するかはわかりません。

于 2012-01-05T13:44:28.170 に答える