본문 바로가기
파이썬

파이썬 --verbose 또는 -v 옵션을 스크립트에 구현하는 방법은 무엇입니까?

by º기록 2020. 10. 3.
반응형

여러 도구에서 -verbose 또는 -v 를 알고 있으며이를 일부 내 스크립트 및 도구에 구현하고 싶습니다.

나는 배치를 생각했다 :

if verbose:
    print ...

사용자가 -v 옵션을 전달하면 verbose 변수가 True 로 설정되고 텍스트가 인쇄.

이것이 올바른 접근 방식입니까 아니면 더 일반적인 방법이 있습니까?

추가 : 인수 구문 분석을 구현하는 방법을 요구하지 않습니다. 나는 그것이 어떻게 행해지는지 압니다. 나는 verbose 옵션에만 특별히 관심이 있습니다.

 

해결 방법

 

내 제안은 기능을 사용하는 것입니다. 하지만 함수에 if 를 넣는 것이 아니라, 다음과 같이하십시오.

if verbose:
    def verboseprint(*args):
        # Print each argument separately so caller doesn't need to
        # stuff everything to be printed into a single string
        for arg in args:
           print arg,
        print
else:   
    verboseprint = lambda *a: None      # do-nothing function

(예, if 문에 함수를 정의 할 수 있으며 조건이 참인 경우에만 정의됩니다!)

print 가 이미 함수 인 Python 3을 사용하는 경우 (또는 from __future__ import print_function ) 더 간단합니다.

verboseprint = print if verbose else lambda *a, **k: None

이렇게하면 verbose 플래그를 지속적으로 테스트하는 대신 verbose 모드가 꺼져 있으면 (람다 사용) 함수가 아무것도하지 않는 것으로 정의됩니다.

사용자가 프로그램을 실행하는 동안 상세 모드를 변경할 수 있다면 이는 잘못된 접근 방식입니다 (함수에 if 가 필요함). 명령 줄 플래그로 설정하는 경우 한 번만 결정하면됩니다.

그런 다음 예를 사용합니다. "verbose"메시지를 인쇄하고자 할 때마다 verboseprint ( "look at all my verbosity!", object (), 3) .

 

참조 페이지 https://stackoverflow.com/questions/5980042

 

 

반응형

댓글