2017-04-12 18 views
0

特定のコマンドラインスイッチを使用してスクリプトを実行するようPythonインタプリタに指示することは可能ですか?例えばPythonインタプリタにスクリプト自体にインタプリタコマンドラインスイッチを使用するように指示する

私はdoctestを有効にしている場合は、私は自己完結型のテストランナーを作成する

if __name__ == '__main__': 
    import doctest 
    doctest.testmod() 

を追加したいと思います。スイッチなしにこれは崇高などのエディタで、常に便利ではありません

python myscript -v 

ビルドシステム・デフォルト:

しかし、これは私がスクリプトを実行する-vスイッチを追加する必要があります。私はカスタムビルダーを作成することができますが、特定のスクリプトに使用するスイッチを指定するのに比べて最適ではありません。

はい、可能でしょうか?誰か以下

UPDATE

doctestの場合は、代わりに通訳スイッチのスクリプトフラグを含むことを指摘しました。しかし、私は本当に両方の場合について知りたいです。

また、testmod(verbose=True)はその特定のケースを解決できますが、私はまだ元の質問に興味があります。 doctest.testmod

+0

WindowsまたはLinuxの場合 – chbchb55

+0

@ chbchb55 macOS – kakyo

+1

注:インタプリタ自体のフラグは、スクリプトのフラグと同じではありません。 'python myscript -v'を実行すると' -v'フラグがスクリプトに渡されますが、 'python -v myscript'はPythonがインタプリタ自身のフラグとして' -v'を解釈する原因になります。 – user2357112

答えて

0

私は一種のものを求めています。 bashシェルを持つシステムでは、私は単に私のスクリプトの先頭に以下を追加でき

#! /usr/local/bin/python3 -m doctest -v 

、その後

chmod +x myscript.py 

のWindowsで(多分待つことを行う方法を知ってはいけませんWin10のLinuxサブシステム)、幸いにも私は主にmacOSで作業します。

これは他のコマンドラインスイッチでも機能します。

1

パスverbose=True:コマンドラインフラグをいじり

if __name__ == '__main__': 
    import doctest 
    doctest.testmod(verbose=True) 

は行くための間違った方法です。

+0

ありがとうございました。私のタイトルの懸念が達成できない場合、私はあなたのものを正しいものとしてマークします。 – kakyo

0

環境変数の使用を検討できます。 は、例えば、

# from the command line 
export VERBOSE_MODE=True 

# in the Python code 
import os 
verbose_mode = os.environ.get('VERBOSE_MODE', False) 

フラグがコマンドラインで提供されていない場合は、このフォールバック機構である可能性があります。

関連する問題