Python Fire 하이픈 대 밑줄
파이썬 패키지 Fire는 명령 줄에서 파이썬 스크립트를 시작하는 데 매우 유용합니다. 한 가지 공통점은 여러 단어로 구성된 인수를 갖는 것입니다. 예를 들어 3 가지 공통 방식으로 작성할 수있는 cat의 이름 :
- nameofcat
- name_of_cat
- 고양이 이름
첫 번째는 거의 모든 것과 호환되지만 두 번째는 bash에서 피해야합니다 ( POSIX 스타일 운영 체제의 명령 줄 옵션이 밑줄 스타일이어야합니까? ). 그리고 세 번째는 파이썬 ( 왜 파이썬은 내부에서 하이픈 사용을 허용하지 않습니다. 함수 및 변수 이름? ).
여기서 문제는 기본적으로 fire가 파이썬 코드에서 인수 이름을 취한다는 것입니다. 즉, 파이썬 코드가 다음과 같은 경우를 의미합니다.
script.py :
import fire
def main(name_of_cat='Steve'):
print(f'The name of the cast is {name_of_cat}')
if __name__ == '__main__':
fire.Fire(main)
그런 다음 명령 줄 (또는 bash 스크립트)에서 호출하려면 다음을 수행합니다.
python script.py --name_of_cat Bob
이것이 제가 현재 사용하고있는 방식이지만 차선책으로 느껴집니다. 모범 사례가 무엇인지에 대한 아이디어가 있습니까?
추신 : python script.py --name-of-cat Bob파이썬은 변수 이름에 하이픈을 사용할 수 없기 때문에 불가능합니다.
답변
이 코드 줄 때문에 하이픈 또는 밑줄과 함께 작동하는 것처럼 보입니다 . 스크립트 사용 :
> python .\script.py --name_of_cat Bob
The name of the cast is Bob
> python .\script.py --name-of-cat Bob
The name of the cast is Bob
이것은 Fire 문서 에도 언급되어 있습니다 .
a를 인스턴스화 한
Building다음climb_stairs함수 를 실행 하려면 다음 명령이 모두 유효합니다.$ python example.py --name="Sherrerd Hall" --stories=3 climb_stairs 10 $ python example.py --name="Sherrerd Hall" climb_stairs --stairs_per_story=10 $ python example.py --name="Sherrerd Hall" climb_stairs --stairs-per-story 10 $ python example.py climb-stairs --stairs-per-story 10 --name="Sherrerd Hall"하이픈과 밑줄 (
-및_)은 멤버 이름과 플래그 이름에서 서로 바꿔 사용할 수 있습니다.
그러나 생성 된 도움말 텍스트는 밑줄이있는 플래그를 요구하는 것 같습니다.
> python .\script.py -h
INFO: Showing help with the command 'script.py -- --help'.
NAME
script.py
SYNOPSIS
script.py <flags>
FLAGS
--name_of_cat=NAME_OF_CAT
내 권장 사항은 빠른 스크립트를 직접 작성하는 경우 Fire는 훌륭하지만 배포하거나 더 복잡한 것을 만드는 경우 argparse (stdlib에 포함) 와 같은보다 구성 가능한 프레임 워크를 사용하는 것이 좋습니다. (내가 좋아하는)를 클릭합니다 . 다음 은 Fire의 자칭 혜택 목록입니다. 사용 사례가 더 복잡한 경우 다른 라이브러리가 더 좋을 수 있습니다.
Fire모듈에 대해서는 확실 하지 않지만 nameofcat유형 구문을 사용하는 파이썬 명령 줄 응용 프로그램이 있습니다. 총 17 개의 aplhabets가 포함 된 단어를 스크립트에 대한 인수로 전달하고 하이펜이나 밑줄을 사용하지 않습니다.