programing

Python argparse 및 bash 완성

kingscode 2021. 1. 15. 08:26
반응형

Python argparse 및 bash 완성


인수에서도 파이썬 스크립트에 대한 자동 완성을 얻고 싶습니다.

나는 bash_completion이 (인수를 위해) 어떻게 작동하는지 실제로 이해하지 못했지만, 파헤친 후에는 다음을 이해했습니다.

  1. 완료 기능을 명령에 바인딩하기 위해 "complete"를 사용합니다.
  2. 모든 완성 함수는 기본적으로 인수 파서의 복사본입니다.

특히 두 번째 요점은 자동으로 생성되기를 원하기 때문에 좋지 않습니다.

가장 좋은 점은 쉘이 모든 TAB에서 무엇을 완료해야하는지 내 프로그램에 요청하는 것입니다.하지만 이것이 실제로 작동하지 않는다는 인상을 받았습니다. 맞습니까?

두 번째 옵션은 아마도 argparse 파서에서 올바르게 완료되는 쉘 함수로 변환기를 작성하는 것입니다.


뻔뻔한 자기 홍보 : https://github.com/kislyuk/argcomplete

argcomplete는 argparse에 bash 완성을 제공합니다.


Bash "완성"은 정말 훌륭합니다. 그리고 Python으로 작성된 프로그램을 위해 쉽습니다 ....

나는 이것이 당신이 원하는 것이라고 생각합니다 : optcomplete : Shell Completion Self-Generator for Python . 예를 들어 Ubuntu에서 "python-optcomplete"패키지로 사용할 수 있습니다.

파이썬 프로그램에 몇 줄을 삽입하면 사용자가 (한 번) bash "complete"프로그램을 실행하여 bash에 인수를 완료하는 방법을 알려줍니다.

complete -F _optcomplete <program>

이제 사용자가 완료되었습니다! 기본적으로 프로그램 옵션에 대한 간단한 완성을 제공합니다. 특정 옵션에 대한 완성 작동 방식을 사용자 정의하는 방법은 예제를 참조하십시오. 아름답게 작성되었으며 하위 명령, 대체 완료 옵션 등을 처리하도록 확장하기 쉽습니다!

최신 정보:

zsh에서 완료하려면 (optparse 및 argparse 모두) genzshcomp 0.3.1 : Python 패키지 색인

@englebip에서 언급했듯이 argparsePython 2.7 및 3.2에 도입 된 모듈에 optparse대해서는 이제 더 이상 사용되지 않으므로 여전히 유사한 것이 필요합니다 .

그 방향으로 나아가는 것에 대한 논의는 다음과 같습니다.

수행 방법에 대한 배경을 참조하십시오. bash에서 python 프로그램 이름 다음에 'tab'키 누름에 argparse (및 더 이상 사용되지 않는 optparse)가 어떻게 응답합니까? - 스택 오버플로

참조 URL : https://stackoverflow.com/questions/8387924/python-argparse-and-bash-completion

반응형