私はテスト名を見つけ、当社で広く使用されているスクリプトを持っています。それはそうのようなコマンドラインで動作します。スクリプト内argparseを使用して別のPythonスクリプト内で呼び出し可能にするスクリプトをどのようにリファクタリングしますか?
find_test.py --type <type> --name <testname>
は相当を示します。
import argparse
parser = argparse.ArgumentParser(description='Get Test Path')
parser.add_argument('--type', dest='TYPE', type=str, default=None, help="TYPE [REQUIRED]")
parser.add_argument('--name', dest='test_name', type=str, default=None, help="Test Name (Slow)")
parser.add_argument('--id', dest='test_id', type=str, default=None, help="Test ID (Fast)")
parser.add_argument('--normalise', dest='normalise', action="store_true", default=False, help="Replace '/' with '.' in Test Name")
args = parser.parse_args()
(わからないすべてのこれらの引数は何をすべきか、私は個人的には最初の2つだけを使用します)。これらの行は、これらの引数を使用するコードによって処理されます。
このスクリプトをリファクタリングして、モジュールとしてインポートすることができますが、コマンドライン機能も保持しています。多くの人がこのスクリプトを使用していて、いくつかのcshスクリプトでも呼び出されています。
私はそうのように、これまでのところ、それをリファクタリングしている:
def _main():
<all the former code that was in find_test.py>
if __name__ == "__main__":
_main()
そして、これはまだコマンドラインから細かい動作します。しかし、私は親スクリプトでどのようにして関連するスイッチを使って引数を渡すのか分かりません。
これをさらにリファクタリングして親スクリプトで呼び出す方法を教えてください。 これは可能ですか?
私が読んだdocoptsは、必要な場合を除いて、新しいargparseを使用しないでください。つまり、会社全体にインストールされていないため、arparousプロシージャになる可能性があります。