mémo python - Spécifiez les options avec getopt

introduction

Si vous souhaitez spécifier un argument lors de l'exécution d'un programme python avec CLI, getopt est utilisé. J'ai essayé divers mouvements de base.

Utilisation de base

URL de référence: https://szarny.hatenablog.com/entry/2017/08/17/231356

Format


import getopt
opts,args = getopt.getopt(text, shortopts, longopts=[])

Exemple


import getopt
opts,args = getopt.getopt(
    sys.args[1:],
    "hle:t:cp:,
    ["help", "listen", "execute=","target=","command","port=" )
argument La description
opts La cible pour laquelle l'argument a été analysé. shortopts,Les cibles correspondant aux longues distances sont définies sous forme de liste
args La cible pour laquelle l'argument a été analysé. shortopts,Les cibles qui ne correspondent pas aux longopts sont définies sous forme de liste
text La cible pour laquelle l'argument est analysé. Sys si l'argument est donné à partir de l'invite.args[1:]D'accord
shortopts Spécification d'option en abréviation. Ajoutez deux points aux options qui nécessitent un argument. Par exemple, h,l,c ne nécessite aucun argument et e,t,p est une option requise en argument
longopts Spécification d'option en détail. Spécifiez au format liste. Les options qui nécessitent un argument sont égales(=)Attacher. Par exemple, exécutez, target,le port nécessite un argument

De plus, les sauts courts et les sauts longs correspondent les uns aux autres, vous devez donc y faire attention.

Exemple d'implémentation

J'ai essayé diverses choses, donc du code supplémentaire est mélangé ...

show_arg.py


import sys
import getopt

def main():
    if not len(sys.argv[1:]):
        print("argument is nothing")
        sys.exit()
    
    text = sys.argv[1:]
        
    try:
        opts,args = getopt.getopt(
            text,
            "t:p:m:h",
            ["target=", "port=", "message=", "hogehoge"]
            )
        print("Options:", opts)
        print("Arguments:", args)
    except getopt.GetoptError as err:
        print(str(err))

main()
print("finished")

Cliquez ici pour le résultat de l'exécution. Si vous spécifiez l'abréviation, un tiret. Deux tirets si spécifiés en détail. La première fois que j'ai essayé des shortopts et des longopts (un modèle qui ne semble pas rentrer dans les args) La deuxième fois, j'ai essayé de définir l'argument pour que la valeur soit entrée dans args

Résultat d'exécution


$ python show_arg.py -t 127.0.0.1 -p 8888 --message hello --hogehoge
('Options:', [('-t', '127.0.0.1'), ('-p', '8888'), ('--message', 'hello'), ('--hogehoge', '')])
('Arguments:', [])
finished
$ python show_arg.py -t 127.0.0.1 -p 8888 --message hello --hogehoge hoge hage hige
('Options:', [('-t', '127.0.0.1'), ('-p', '8888'), ('--message', 'hello'), ('--hogehoge', '')])
('Arguments:', ['hoge', 'hage', 'hige'])
finished
$ 

en conclusion

C'était super pratique de le rendre disponible sous forme d'ensemble avec getops et sys.argv.

Recommended Posts

mémo python - Spécifiez les options avec getopt
Spécifiez les options lors de l'exécution de python
Spécifiez la version python avec virtualenv
mémo python
Entrée / sortie avec Python (mémo d'apprentissage Python ⑤)
Définir les options de compilation python avec pyenv
Mémo Python
mémo python
Mémo Python
Mémo d'apprentissage "Scraping & Machine Learning avec Python"
Mémo Python
[Memo] Tweet sur Twitter avec Python
Convertir un mémo à la fois avec Python 2to3
Spécifiez les options lors de l'exécution de flake8 avec flycheck
Mémo pour demander des KPI avec python
"Commerce du système à partir de Python3" lecture du mémo
Un mémo contenant Python2.7 et Python3 dans CentOS
[Python] Mémo sur le dictionnaire
FizzBuzz en Python3
Grattage avec Python
mémo débutant python (9.2-10)
Statistiques avec python
Grattage avec Python
Python avec Go
mémo débutant python (9.1)
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
★ Mémo ★ Python Iroha
python commence par ()
avec syntaxe (Python)
[Python] Mémo EDA
Mémo opérateur Python 3
Bingo avec python
Zundokokiyoshi avec python
[Mon mémo] python
Mémo de métaclasse Python3
[Python] Mémo de fond de carte
Mémo débutant Python (2)
Excel avec Python
[Python] Mémo Numpy
Micro-ordinateur avec Python
Cast avec python
[Personal memo] julia --Utiliser la bibliothèque Python avec Julia en utilisant PyCall
Spécifiez le fichier exécutable Python à utiliser avec virtualenv
Comment spécifier des attributs avec Mock of Python
Un mémo lors de la création d'un environnement python avec miniconda
La lecture et l'écriture s'adaptent aux fichiers avec Python (mémo)
Mémo pour l'édition de scènes avec Blender python (W.I.P.)
Communication série avec Python
Zip, décompressez avec python
Django 1.11 a démarré avec Python3.6
Jugement des nombres premiers avec Python
Communication de socket avec Python
Analyse de données avec python 2
Classe Python (mémo d'apprentissage Python ⑦)
Essayez de gratter avec Python.
Apprendre Python avec ChemTHEATER 03