나는 테스트 이름을 찾고 우리 회사에서 널리 사용되는 스크립트를 가지고있다. 그것은과 같이 명령 행에서 작동 : 스크립트 내부argparse를 사용하는 스크립트를 다른 파이썬 스크립트 내에서 호출 가능하도록 리팩터링하는 방법은 무엇입니까?
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()
(확실하지 모든 인수가하는 일, 내가 개인적으로 첫 번째 두 개를 사용). 그런 다음이 인수는이 인수를 사용하는 코드에 의해 진행됩니다.
이 스크립트를 리팩토링하여 모듈로 가져올 수 있도록하고 싶지만 명령 줄 기능을 보존하고 있습니다. 많은 사람들이이 스크립트를 사용하며 일부 csh 스크립트에서 호출되기도합니다.
내가 지금처럼, 지금까지 그것을 리팩토링 한 :
def _main():
<all the former code that was in find_test.py>
if __name__ == "__main__":
_main()
을 그리고이 여전히 명령 줄에서 잘 실행됩니다. 그러나 부모 스크립트에서 어떻게 관련 스위치가 포함 된 인수를이 항목에 전달하는지 알지 못합니다.
어떻게 이것을 리팩토링하고 상위 스크립트에서 호출 할 수 있습니까? 이것이 가능합니까?
필자가 읽은 docopts는 필요하지 않으면 새로운 argparse를 사용하지 않을 것입니다. 즉, 회사 전체에 설치되지 않았고 힘든 절차가 될 수 있기 때문에 argparse를 사용할 수 없습니다.