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.
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.
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
$
C'était super pratique de le rendre disponible sous forme d'ensemble avec getops et sys.argv.
Recommended Posts