Gegründet 2006

python click 예제

바라건대, 이 블로그 게시물은 클릭을 사용하여 명령줄 앱을 빌드하는 방법에 대한 유용한 예를 보여 주었는지 보여 주실 것입니다. 클릭은 강력하고 사용하기 쉽고, 좋은 소프트웨어 디자인의 희귀 한 위업입니다! 이 패키지와 같은 멋진 일을 위해 클릭하게 pocoo 그룹에 큰 명예. 이름은 그것이 무엇을하는지에 꽤 좋은 단서를 제공합니다, 그것은 우리가 우리의 매개 변수의 유형을 정의 할 수 있습니다. 가장 눈에 띄는 것은 str, int, float와 같은 기본 제공 파이썬 유형이지만 Click은 패스, 파일 등 추가 형식을 제공합니다. 전체 목록은 매개 변수 유형섹션에서 사용할 수 있습니다. 나는 나 자신을 위해 명령줄 응용 프로그램을 구축하고 싶었다. 나는 아이디어를 가지고, 나는 파이썬입니다, 내가 쓸 거야 언어에 알고 있었다. 몇 가지 연구 후, 나는 파이썬과 함께 제공되는 내장 모듈, argparse가 충분하지 않다는 것을 발견했습니다. 그것은 좋은 쉽게. 그래서 우리가 우리의 기존 클릭 명령에 추가할 수 있는 방법을 살펴보겠습니다.

click.pass_context 데코레이터를 어디에 두는지는 중요하지 않으며 컨텍스트가 항상 첫 번째 인수가 됩니다. 컨텍스트에 저장된 API 키를 사용하면 pass_context 데코레이터를 추가하여 두 명령 모두에서 액세스할 수 있습니다. l 은 설정 도구를 사용합니다. 이 영감을 한 경우, 당신은 더 많은 기능에 대한 공식 클릭 설명서를 확인해야합니다. 또한 PyCon US 2016에서 클릭할 수 있는 소개 강연을 확인할 수도 있습니다. 또는 내 후속 자습서에 대 한 눈을 밖으로 유지 어디 당신은 우리의 날씨 CLI에 몇 가지 더 많은 고급 기능을 추가 하는 방법을 배울 거 야. 필수 인수를 특정 기능을 제공하는 새 명령(하위 명령이라고도 함)으로 사용합니다. 예를 들어 heroku 로그인은 로그인이 성공하면 당신을 인증하고 구성 파일에 토큰을 저장합니다. ApiKey를 매개 변수의 유형으로 사용할 때 Click은 변환 메서드를 호출하고 사용자의 입력을 값 인수로 전달합니다. 매개 변수는 click.option 또는 click.argument 데코레이터를 사용하여 선언한 매개 변수를 포함합니다. 마지막으로 ctx는 이 자습서의 후반부에서 이야기할 명령의 컨텍스트를 참조합니다. 하위 명령, 사용자 입력, 매개 변수 유형, 컨텍스트 등과 같은 고급 기능을 사용하여 기존 Click Python CLI를 개선하는 방법.

클릭에 대한 아름다움은 우리가 무료로 몇 가지 추가 기능을 얻을 수 있다는 것입니다. 도움말 기능을 구현하지는 않았지만 –help 옵션을 추가하면 명령줄에 인쇄된 기본 도움말 페이지가 표시됩니다. 그것은 꽤 성가신 수 있습니다. 도구가 이를 처리하는 방법을 개선해야 하는 몇 가지 옵션을 살펴보겠습니다. 어떤 값을 취할 필요가 없습니다 몇 가지 옵션이 있습니다. 그들은 단지 플래그입니다. 예를 들어 –help 명령입니다. 그것은 그것의 가치를 하지 않습니다. cli 도구를 사용하는 동안 발견 할 수있는 또 다른 예는 –version입니다. 가장 먼저 수정해야 할 것은 API 키 옵션에 대한 누락된 설명입니다. 우리가해야 할 일은 @click.option 데코레이터에 도움말 텍스트를 제공하는 것입니다: click.echo()는 메시지와 지정된 파일 또는 stdout에 대한 줄 바선을 인쇄합니다.

첫눈에, 이것은 인쇄 함수처럼 보이지만 시스템이 얼마나 잘못 구성되어 있든 간에 실패하지 않는 유니코드 및 이진 데이터 처리에 대한 지원이 향상되었습니다. 클릭 모듈은 표준 인쇄 함수가 아닌 에코 함수를 사용하여 인쇄하는 것이 좋습니다. 따라서 코드에서 필요한 변경을 할 것입니다. 이 시점에서 내가 처음 클릭을 발견 했을 때 느꼈던 것 같은 느낌이 희망: 🤯 우선, 지금은 마지막 두 줄에 대해 걱정 하지 말자. 이것은 파일이 스크립트로 실행될 때 주 함수를 실행하는 Python의 (약간 직관적이지 않은) 방법입니다. 어떤 모습일까요? 다음은 간단한 Click 프로그램의 예입니다.

Comments are closed.